我一直在研究多线程C(Linux)应用程序一段时间 - 录像机有音频和视频捕获,编码,复用和写入线程。多线程C应用程序框架或模式
我开始使用pthread操作将它一起扔到一起,但现在我试图扩展它以支持更多的状态并重构代码块,这些块会弹出为重复的锁定,设置标志和信号一个条件,等等。
到目前为止,我想出的是这样的:
- 每个线程都应该有一个互斥锁,并满足两个条件 - 一个唤醒线程和其他信号线程完成执行一些其他线程可能正在等待的工作。
- 数据队列由某个线程“拥有”,并使用该线程的锁保护。
- 每个线程都需要“有效”和“无效”状态的概念,以及在完成时在这些和信号之间移动的能力。
我打算将常见元素存储在一个结构中,并有一个这些结构的数组,我可以循环来启动,检查并停止所有线程。因为这变成了一个更通用的线程支持模型,我认为我很可能重新发明了轮子,所以我会问这里是否有一些我应该应用的已知模式。
看一看[油嘴(http://developer.gnome.org/glib/stable/ glib-core.html) – 2012-02-28 09:46:46
@AlexandreC我对Glib不太了解,但看起来它只是抽象线程并增加了重量,我正在寻找线程交互模型 – blueshift 2012-02-29 07:02:34