2012-03-28 82 views
1

我正在开发即时消息应用程序。pthread除了等待和信号

这是我需要帮助的情况: 我的代码中的例程fgets()用户输入的消息。 现在我需要唤醒一个线程,它有一个例程发送消息到套接字等。我不知道如何做到这一点。

如果我使用互斥锁:我不希望我的第一个线程等待。因此我不想使用这个。 同样我不能使用cond_variable。

请告诉我如何得到它。

+2

不要以为过。您的两个线程将花费(a)等待用户输入和(b)通过网络传输的时间量为EONS,与您想象中的互斥/共变花费相比较。 – Duck 2012-03-28 22:53:18

+1

为什么你不能使用条件变量?条件变量被设计为在某个事件发生时唤醒线程,所以它们可以在这里很方便地使用。 – 2012-03-28 23:05:35

回答

0

鸭的关于不过度的观点是一个很好的观点。

另一种方法是使用管道。您的控制台处理线程会向管道写入消息,并且网络线程会从管道中进行阻止读取。

你可能最终得到的结果是网络线程在控制台管道和网络套接字上执行select()。然后,它会醒来,做一些事情,或者有东西要发送,或者从网络上接收。时髦!