日期:2014-05-16 浏览次数:20625 次
Linux下多任务间通信和同步-消息队列
嵌入式开发交流群280352802,欢迎加入!
消息队列简称为队列.消息队列就是一些消息的列表.用户可以在消息队列中添加消息和读取消息等.从这点上看,消息队列具有一定的FIFO特性,但是它可以实现消息的随机查询,比FIFO具有更大的优势.同时,这些消息又是存在于内核中的,由"队列ID"来标识.
消息队列的实现包括创建或打开消息队列,添加消息,读取消息和控制消息队列这四种操作:该系统调用创建或打开一个消息队列.msgget函数语法:
其中,msgflag可以为:IPC_CREAT,IPC_EXEC,IPC_NOWAIT或者三者的组合.在一下两种情况下,该调用将创建一个新的消息队列:
该系统调用行msgid代表的消息队列发送一个消息.msgsnd函数语法:
对于发送消息来说,有意义的msgflag标志位IPC_NOWAIT,指明在消息队列没有足够容纳要发送的消息时,msgsnd是否等待.造成msgsnd等待的条件有两种:
msgsnd解除阻塞的条件有三个:
该系统调用从ID为msgid的消息队列中读取一个消息,并把消息存储子啊msgq指向的msgbuf结构中.msgrcv函数语法:
msgrcv解除阻塞的条件有三个: