繁体   English   中英

Posix线程通信Linux

[英]Posix thread communication Linux

我有一个工作线程,该线程从程序开始就处于活动状态,并且始终将一个对象从队列中移出进行处理。 我想知道阻止线程的最佳方法是什么? 该对象将以大约每几十微秒的幅度(10-100微秒之间)被推入队列。 我应该将线程设置为恒定睡眠时间还是应该制定出线程之间的某种信令机制? 我想主要关注性能问题。 有任何想法吗?

谢谢。

另一方面,您可以使用条件变量 ,只要它是pthreads的通用功能即可。 条件变量是根据pthread互斥量设计的,因此它们是非常有效的同步原语(当然取决于实际平台)。

跟随他们

如果您的数据不太大, Posix消息队列看起来是一个不错的选择。 您还可以使用POSIX信号量

生产者线程将数据放在队列中,然后执行sem_post
使用者线程使用sem_wait等待,并从队列中删除数据。

使用IMO比使用条件变量更容易。 当然,您需要保护您的队列。 根据对象的大小,它可能比消息队列更适合,但是您需要实现自己的队列。

两者都可以在进程之间而不是线程之间使用。 如果您决定使用进程而不是线程,则可以保留同步机制,条件变量则不是这种情况。

在阻塞模式( mq_open等)下使用POSIX消息队列,这非常简单,并查看它们是否满足您的性能要求。 如果没有,问另一个问题:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM