作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的程序有两个从主线程创建的线程。每个线程在连接的单独外部通信设备上运行。
main thread
thread_1 thread_2
最佳答案
你的问题是Producer Consumer Problem的经典例子.
根据上下文,有多种可能的方法来实现这一点 - 您的帖子同时被标记为 pthreads
, 和 linux-device-drivers
.这是内核空间、用户空间还是内核空间-> 用户空间?
内核空间
解决方案可能涉及环形缓冲区(如果您预计线程之间的多条消息可以同时传输)和信号量。
Linux Device Drivers 3rd Edition第5章将是一个很好的起点。
用户空间
如果两个线程都在用户空间中,同一进程中的生产者-消费者模式通常用 pthread
实现condition variable .如何做到这一点的有效示例是 here
内核空间 -> 用户空间
Linux 中使用的一般方法是针对用户空间线程 thread_2
阻塞由内核空间发出信号的文件系统对象 thread_1
.通常,有问题的归档系统对象在 /dev
中。或 /sys
. LDD3 有这两种方法的例子。
关于pthreads - 线程间数据传输 - Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13679531/
我是一名优秀的程序员,十分优秀!