线程间通信的方式有许多种类,比如:Posix类消息通信机制,或者System V类的消息通信机制;
但是在同一个进程下线程又共享资源,所以不必要使用消息队列,共享内存等机制,直接使用
双向链表就可以实现快速的通信机制了,那么以下就是关于双向链表的使用宏定义封装:
1.
首先我们设置链表的节点数据结构:
struct Thread_msg_t{
struct Thread_msg_t *p; /*前指针*/
struct Thread_msg_t *n; /*后指针*/
int Msg_size; /*消息大小*/
void *Msgp; /*消息内容*/
};
2.这里创建链表头结点:
/*创建链表头结点 ; */
/*head :头结点 */
/*tgt: 给头结点的数据*/
/*条件:当外部传入参数 head == NULL 时 */
/* 调用该宏 */
#define THREAD_LIST_CREATE_HEAD(head,tgt) \
do{ \
(head) = tgt; \
(tgt)->p = NULL; \
(tgt)->n = NULL; \
}while(0)
3.这里是移除头结点:
/*移除链表节点,移除头部结点 */
/*参数:head:头结点 *