gpt4 book ai didi

pthreads - 线程间数据传输 - Linux

转载 作者:行者123 更新时间:2023-12-04 23:25:28 24 4
gpt4 key购买 nike

我的程序有两个从主线程创建的线程。每个线程在连接的单独外部通信设备上运行。

                main thread
thread_1 thread_2

Thread_1 从外部设备接收数据包。每个数据包是一个 20 字节的结构。

现在我希望 thread_2 读取 thread_1 接收到的数据并将其传输到连接到它的设备。

我们如何在我的两个线程之间传输数据。

在这种情况下使用的 linux 变量类型的确切名称是什么?

最佳答案

你的问题是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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com