Mom*_*gil 4 c linux multithreading pthreads
有趣的是,这似乎是一个基本问题,但我找不到任何C语言的例子(在SO中,我发现只有Python,C#和C++).
关键是:作为一个Qt程序员,当我需要在不同的线程之间传输一些数据时,我会在那之间启动信号槽连接并使用该emit signal机制来完成工作.
但现在我在嵌入式Linux的C应用程序中工作,我需要做类似的工作,但我没有Qt的机制可用.问题是:我怎样才能使两个或多个线程在C中以类似于Qt信号和插槽的方式相互通信?
我知道共享数据的方法之一是全局变量,其变量受互斥锁保护.但即便如此,我可能无法以异步方式执行系统:我必须有一个循环,不断检查变量是否已更改.但是,如果我想在另一个完成一些工作之后执行某个线程的特定方法(因此,以异步方式),该怎么办?然后它似乎失败了.
注意:虽然我使用的是嵌入式Linux,因此,提及一些可以采用POSIX功能和其他"Linux相关方式"的选项会有所帮助,如果有更多的时间用于解决方案,对社区来说仍然会更好.不严格基于某个特定平台(如果可能的话).
一种方法是通过异步队列在线程之间使用消息传递。这样您就可以避免在线程之间使用共享数据,并且只有队列需要是线程安全的。
异步队列可以使用不同的同步原语来实现:
| 归档时间: |
|
| 查看次数: |
30480 次 |
| 最近记录: |