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