acl  3.5.3.0
acl_mbox.h 文件参考
#include "acl_define.h"
+ acl_mbox.h 的引用(Include)关系图:
+ 此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

宏定义

#define ACL_MBOX_T_SPSC   0 /* 单生产者单消费者 */
 
#define ACL_MBOX_T_MPSC   1 /* 多生产者单消费者 */
 

类型定义

typedef struct ACL_MBOX ACL_MBOX
 

函数

ACL_API ACL_MBOXacl_mbox_create (void)
 
ACL_API ACL_MBOXacl_mbox_create2 (unsigned type)
 
ACL_API void acl_mbox_free (ACL_MBOX *mbox, void(*free_fn)(void *))
 
ACL_API int acl_mbox_send (ACL_MBOX *mbox, void *msg)
 
ACL_API void * acl_mbox_read (ACL_MBOX *mbox, int timeout, int *success)
 
ACL_API size_t acl_mbox_nsend (ACL_MBOX *mbox)
 
ACL_API size_t acl_mbox_nread (ACL_MBOX *mbox)
 

宏定义说明

◆ ACL_MBOX_T_MPSC

#define ACL_MBOX_T_MPSC   1 /* 多生产者单消费者 */

在文件 acl_mbox.h19 行定义.

◆ ACL_MBOX_T_SPSC

#define ACL_MBOX_T_SPSC   0 /* 单生产者单消费者 */

在文件 acl_mbox.h18 行定义.

类型定义说明

◆ ACL_MBOX

typedef struct ACL_MBOX ACL_MBOX

在文件 acl_mbox.h10 行定义.

函数说明

◆ acl_mbox_create()

ACL_API ACL_MBOX* acl_mbox_create ( void  )

创建无锁消息队列对象

返回
{ACL_MBOX}

◆ acl_mbox_create2()

ACL_API ACL_MBOX* acl_mbox_create2 ( unsigned  type)

◆ acl_mbox_free()

ACL_API void acl_mbox_free ( ACL_MBOX mbox,
void(*)(void *)  free_fn 
)

释放无锁消息队列对象

参数
mbox{ACL_MBOX*} 消息队列对象
free_fn{void (*)(void*)} 非空时用来释放当前存在于消息队列中的对象

◆ acl_mbox_nread()

ACL_API size_t acl_mbox_nread ( ACL_MBOX mbox)

获得当前消息队列已经成功接收到的消息数

参数
mbox{ACL_MBOX*} 消息队列对象
返回
{size_t}

◆ acl_mbox_nsend()

ACL_API size_t acl_mbox_nsend ( ACL_MBOX mbox)

获得当前消息队列已经成功发送的消息数

参数
mbox{ACL_MBOX*} 消息队列对象
返回
{size_t}

◆ acl_mbox_read()

ACL_API void* acl_mbox_read ( ACL_MBOX mbox,
int  timeout,
int *  success 
)

从消息队列中读取消息

参数
mbox{ACL_MBOX*} 消息队列对象
timeout{int} 等待超时时间(毫秒级别),如果 < 0 则一直等待直到有数据
success{int*} 存储操作是否成功的结果, 0 表示出错,非 0 表示成功
返回
{void*} 返回读到的消息对象,如果返回 NULL 时还需判断 success 的值,以此来 判断读操作是否成功,如果返回非 NULL 表示成功读到一条消息

◆ acl_mbox_send()

ACL_API int acl_mbox_send ( ACL_MBOX mbox,
void *  msg 
)

向消息队列中添加动态消息对象

参数
mbox{ACL_MBOX*} 消息队列对象
msg{void*}
返回
{int} 发送成功返回 0,否则返回 -1