c - 如何在 posix 线程之间发出缓冲区已满状态的信号

标签 c linux multithreading posix

我有两个线程,主线程'A'负责多个进程之间的消息处理。当线程 A 收到缓冲区已满消息时,它应该通知线程 B 并传递一个指向缓冲区的指针,然后线程 B 将处理该缓冲区。

当线程 B 完成时,它应该通知线程 A 它已经完成。

我如何在 Linux 上使用 C 语言使用 posix 线程来实现它。我看过条件变量,这是要走的路吗? .我在多线程编程方面没有经验,希望获得有关最佳途径的一些建议。

谢谢

最佳答案

如果放宽 B 开始处理之前缓冲区必须已满以及 A 再次开始填充之前缓冲区必须为空的条件,那么这就是经典 producer-consumer problem .

如果您不能放宽这些条件,那么我看不出将两个线程之间的功能分开的好处。由于线程 A 不能在线程 B 处理时向缓冲区添加内容,而线程 B 不能在线程 A 向缓冲区添加内容时进行任何处理,因此所有工作都可以在一个线程中完成。

关于c - 如何在 posix 线程之间发出缓冲区已满状态的信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2673543/

相关文章:

c - 为什么我的互斥量在多进程 C 应用程序中不能正常工作?

linux - 如何在 printf 中传递变量

使用B+树创建索引文件

c++ - C++ 中的参数和函数问题

c - 夹板示例 rc 文件

linux - AWS lambda 生成 `CXXABI_1.3.9' 在 native 库调用中找不到

linux - 如何获知GNU parallel一次最多可以运行多少个进程?

c++ - 如何更快地读取多个文件?

android - ListView 中的独特项目 View

python 2.7 : Thread local storage's instantiation when first accessed?