日期:2014-05-16  浏览次数:20796 次

线程间发消息
有几个接收线程,收到数据后发给另一个线程做数据处理。
问题1)

想实现windows里PostThreadMessage类似的功能,在线程间传递数据。查阅资料后,得知可用 信号量+消息队列 或者 pthread_kill+消息队列。但本人太菜,不知如何实现,请给出例子,谢谢。

问题2)
那几个接收线程,本人觉得不需要同步处理,而只需要在接收线程和数据处理线程间做同步。不知对不?


------解决方案--------------------
C/C++ code

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,队列+互斥锁+条件变量的阻塞等待架构

自己选择一个。
------解决方案--------------------
探讨

引用:

1,管道1字节+select/epoll+加锁队列的异步通知架构
2,队列+互斥锁+条件变量的阻塞等待架构

自己选择一个。

弱弱的问下,第一种加锁队列是神马队列?
第二种队列是指消息队列吗?貌似阻塞等待没有异步通知好,是么?