簡體   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