多线程C应用程序框架或模式
我一直在研究一个多线程C(Linux)应用程序 – 一个录像机,它有线程用于音频和视频捕获,编码,多路复用和写入. 我开始使用pthread操作临时将它放在一起,但是现在我正在尝试扩展它以支持更多状态并重构代码块,这些代码块与锁定,设置标志和发出条件信号重复出现,以及等等. 到目前为止,我想出的是这样的: >每个线程都应该有一个互斥锁和两个条件 – 一个用于唤醒线程,另一个用于表示线程已经完成了另一个线程可能正在等待的一些工作. 我打算将公共元素存储在一个结构中,并有一个结构数组,我可以循环来启动,检查和停止所有线程. 由于这变成了一个更通用的线程支持模型,我以为我可能会重新发明轮子,所以我会问这里是否应该应用一些众所周知的模式. 最佳答案
您的想法提醒我很多在QP状态机框架中实现的活动对象计算模型.具体来说,QP / C和QP / C框架已移植到POSIX(包括Linux,BSD等).该端口已在应用笔记“QP和Linux”中详细描述,可从以下位置获得:http://www.state-machine.com/linux/AN_QP_and_Linux.pdf.
以下是Linux的QP端口的亮点: >每个状态机都在自己的p线程中执行.使用互斥锁和条件变量实现的事件队列上的p线程块.当事件队列收到事件时,线程解除阻塞,并且该事件由与该线程关联的状态机处理. (这是众所周知的主动对象计算模型.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |