pthread暂停/等待条件

时间:2017-02-25 01:03:01

标签: c pthreads mutex pause

我有两个与串口通信的线程。一个线程连续轮询串行端口。轮询是通过首先写入串口写入(“你有消息”)然后读取回复来完成的。这必须连续发生。

我有另一个用于通过串口发送命令的线程。所以这个线程所做的就是将消息写入端口,然后读取消息已发送的确认信息。

因此,当一个线程用于读取而另一个线程用于写入时,它们都执行read()和write()。

我的问题是,我当前的实现使用和读取互斥锁和写互斥,这当然意味着你可以获得写,写,读,读顺序,这不是我想要的行为。

我只尝试使用一个锁并包含写/读,但这导致一个线程(轮询线程)永远不会让另一个线程抓住锁,或者它随机发生,即使我在解锁后放入睡眠一个线程。

那么,有没有办法暂停一个线程......在完成一个读/写组合之后说,让另一个线程做它的事情?解决这个问题的最佳方法是什么?我不想使用pthread_join因为1.它将暂停我创建这些线程的主代码和2.除非出现错误,否则轮询线程永远不会退出。

由于

0 个答案:

没有答案
相关问题