【发布时间】:2014-09-16 19:21:59
【问题描述】:
有趣的是,这似乎是一个基本问题,但我找不到 C 语言的任何示例(在 SO 中,我只找到了 Python、C# 和 C++)。
重点是:作为一个Qt程序员,当我需要让一些数据在不同线程之间传输时,我会在它们之间建立一个信号槽连接,并使用emit signal机制来完成这项工作。
但现在我正在为嵌入式 Linux 开发一个 C 应用程序,我需要在其中做类似的工作,但我没有可用的 Qt 机制。问题是:如何让两个或多个线程在 C 中以类似于 Qt 的信号和槽的方式相互通信?
我知道共享数据的一种方法是使用全局变量,其更改受互斥锁保护。但即便如此,我也可能无法以异步方式执行系统:我必须有一个循环来不断检查变量是否已更改。但是如果我想在另一个线程完成一些工作之后执行一个线程的特定方法(所以,以异步方式)?那么这种方式似乎失败了。
注意:虽然我使用的是嵌入式 Linux,因此,提及一些采用 POSIX 功能的选项和其他“与 Linux 相关的方式”会有所帮助,但如果给社区更多的时间,它仍然会更好不严格基于某个特定平台的解决方案(如果可能的话)。
【问题讨论】:
-
您的嵌入式系统的规格是什么?也许你可以使用 C++?
-
@MaximYegorushkin 实际上我想在这个项目中使用 Qt(所以 C++)(完全可行),所以我可以使用信号和插槽等,但团队的其他成员不赞成并更愿意继续使用纯C =T
-
我能感觉到你的痛苦:(
标签: c linux multithreading pthreads