All*_*lan 4 pthreads linux-device-driver embedded-linux
我的程序有两个主线程创建的线程.每个线程在连接的独立外部通信设备上运行.
main thread
thread_1 thread_2
Run Code Online (Sandbox Code Playgroud)
Thread_1从外部设备接收数据包.每个数据包是一个20字节的结构.
现在我希望thread_2读取thread_1收到的数据并将其传输到与之相连的设备.
我们如何在两个线程之间传输数据.
在这种情况下要使用的linux变量类型的确切名称是什么?
您的问题是生产者消费者问题的典型例子.
根据上下文,有许多可能的方法来实现这一点 - 你的帖子都用两者标记pthreads,和linux-device-drivers.这是内核空间,用户空间还是内核空间 - >用户空间?
一个解决方案可能涉及一个环形缓冲区(如果你预计线程之间的多条消息可以同时在线)和一个信号量.
Linux设备驱动程序第3版第5 版将是一个很好的起点.
如果两个线程都在用户空间中,则同一进程中的生产者 - 消费者模式通常使用pthread 条件变量实现.如何做到这一点的一个样例是这里
Linux中使用的一般方法是用户空间线程thread_2阻止由内核空间发出信号的文件系统对象thread_1.通常,所涉及的归档系统对象是/dev或/sys.LDD3有这两种方法的例子.