1.共享内存前端
双向链表异步
环形缓冲socket
2.互斥ide
中断锁:做用域仅限于中断内部。函数
优先级锁:共享内存中,低优先级的任务不容许被打断,优先级锁就被使用。弊端:会彻底禁止任务的调度。指针
3.信号量(一种指向semaphore结构的指针)blog
SEM_EVENTSEND_ERR_NOTIFY,释放信号量出错返回错误;SEM_DELETE_SAFE模式避免拥有信号量的任务被删除;SEM_INVERSION_SAFE避免系统出现优先级反转现象。
队列
SEM_ID semId;//声明信号量ip
semId = semXCreate(SEM_Q_PRIORITY,SEM_EMPTY);建立信号量内存
1)二值信号量
速度最快,只有惟一的任务能够获取,一个任务释放,一个任务才能获取
2)互斥信号量
特殊二值信号量,只有拥有信号量的任务,才能使用semGIve释放信号量;二值信号量和计数信号量,全部的任务都能释放信号量;二值信号量被释放以前只能有一个任务使用semTake获取信号量;计数信号量被释放前能够有多个任务获取信号量,上限是计数值;在互斥信号量中,也只有一个任务获取信号量,可是容许同一个任务联系屡次获取中一个信号量,固然获取多少次就释放多少次;二进制信号量和计数信号量均指出semFlush操做,用于向全部等待信号量的任务释放信号量,使他们进入就绪态,信号量自己不变,可是,互斥信号量不支持semFlush。
3)计数信号量
和二值信号量相似,可是一个信号量能够被多个任务后去知道计数的限制。
4.消息队列
建立一个队列,一个任务发送,一个任务接收,队列有大小,经过建立的队列返回的句柄来发送和接收消息。
msgQCreate建立消息队列,属性:先进先出MSG_Q_FIFO、消息优先级MSG_Q_PRIORITY、发送时间通知MSG_Q_EVENTSEND_ERR_NOTIFY,前两个能够和第三个属性组合。返回值就是队列句柄,也就是发送和接收函数操做队列的参数。
msgQsend向队列中发送消息,紧急程度参数:普通消息MSG_PRI_NORMAL和紧急消息MSG_PRI_URGENT。紧急就是将消息放到前端。
接收使用WAIT_FOREVER做为超时参数,则消息队列引发任务阻塞,知道队列中有消息。
5.管道
支持select机制能够用于异步通讯、支持全双工
status = pipeDevCreate("/pipe/pipe0",Max_MsgNo,Max_MsgLen);
经过,open(),read(),write(),ioctl()来访问管道。
6.socket
和Linux相似,以前已总结过
7.信号