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

时间:2010-04-20 08:09:52

标签: c linux multithreading posix

我有两个线程,主线程'A'负责多个进程之间的消息处理。当线程A获得缓冲区满的消息时,它应通知线程B并将指针传递给线程B将处理的缓冲区。

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

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

由于

3 个答案:

答案 0 :(得分:0)

是的,条件变量和互斥锁是实现解决方案时必须使用的两件事。

您可以查看“A few ways to use threads”部分,了解如何操作。

答案 1 :(得分:0)

如果你放松了在B开始处理之前缓冲区必须已满的条件,并且在A再次开始填充之前缓冲区必须为空,那么这就是经典的producer-consumer problem

如果你不能放松这些条件,那么我没有看到在两个线程之间分离功能的好处。由于线程A在线程B处理时无法添加到缓冲区,并且线程B在线程A添加到缓冲区时无法进行任何处理,因此所有工作都可以在一个线程中完成。

答案 2 :(得分:0)

如何使用posix信号量来表示'填充缓冲区的数量'。指针可以通过共享环缓冲区传递。根据您希望如何处理溢出,您可能需要使用互斥锁进行保护。