当前位置: 技术问答>linux和unix
线程间发消息
来源: 互联网 发布时间:2017-03-06
本文导语: 有几个接收线程,收到数据后发给另一个线程做数据处理。 问题1) 想实现windows里PostThreadMessage类似的功能,在线程间传递数据。查阅资料后,得知可用 信号量+消息队列 或者 pthread_kill+消息队列。但本人太菜,不...
有几个接收线程,收到数据后发给另一个线程做数据处理。
问题1)
想实现windows里PostThreadMessage类似的功能,在线程间传递数据。查阅资料后,得知可用 信号量+消息队列 或者 pthread_kill+消息队列。但本人太菜,不知如何实现,请给出例子,谢谢。
问题2)
那几个接收线程,本人觉得不需要同步处理,而只需要在接收线程和数据处理线程间做同步。不知对不?
问题1)
想实现windows里PostThreadMessage类似的功能,在线程间传递数据。查阅资料后,得知可用 信号量+消息队列 或者 pthread_kill+消息队列。但本人太菜,不知如何实现,请给出例子,谢谢。
问题2)
那几个接收线程,本人觉得不需要同步处理,而只需要在接收线程和数据处理线程间做同步。不知对不?
|
1.先create一个msg Queue
2.然后rcv thread收到msg之后就发给这个msg Q
3.proc thread每次从这个msg Q中取一个data进行处理。对于data,如果有不同的类型的话,那么就要对类型进行
判断,然后再做相应的处理,比方说,如果是typeA的话,那么就执行proc_A(),如果是typeB的话,就执行proc_B()
|
1,管道1字节+select/epoll+加锁队列的异步通知架构
2,队列+互斥锁+条件变量的阻塞等待架构
自己选择一个。
2,队列+互斥锁+条件变量的阻塞等待架构
自己选择一个。
|
就是普通队列+锁,只是在操作或者访问此队列时,先获得锁。做到互斥。