| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 搜狗workflow项目研究(八)消息队列 -> 正文阅读 |
|
[数据结构与算法]搜狗workflow项目研究(八)消息队列 |
2021SC@SDUSC 目录 一、基本接口
*msgqueue_create:创建消息队列 msgqueue_put:put数据 *msgqueue_get:get数据 msgqueue_set_nonblock:设置存放数据方式为非堵塞 msgqueue_set_block:设置存放数据方式为堵塞 msgqueue_destroy:销毁消息队列 二、初始化
在信息列表初始化的时候,需要指定最大消息数量和消息头部偏移量。其中maxlen为最大消息数量,linkoff为消息头部偏移量。 消息头部偏移量主要是为了利用msg头部偏移后的空间,来形成链表。 一个常规的消息队列节点:
在这里没有指定节点内容,而是使用了msg头部偏移后的空间,因此在使用的时候,该偏移量的后部需要保留一个指针大小的空间。具体可见下图: ?三、put数据放数据时分为堵塞和非堵塞两种形式,默认为堵塞。 ?堵塞情况:在放数据的时候,如果目前消息队列已超过设定的最大值,那么就等待信息被消费。 非堵塞情况:如果设置了非堵塞,则会释放get_cond和put_cond,通知目前堵塞的线程继续往下执行。此时用户设置的最大值不再生效,会继续向消息队列中放入数据。
四、get数据如果当前队列中有数据,直接读取队列中下一个数据。如果当前队列中没有数据,返回空,设置错误码。 get数据时,返回数据的头部。
五、数据结构
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 12:31:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |