簡體   English   中英

在C中使用pthread的線程中的計時器?

[英]timer in a thread with pthread in C?

在線程中,我需要定期在一些不同的時間間隔內完成一些工作,這樣做的好方法是什么? 使用sleep(),然后我需要跟蹤下一次喚醒的間隔,這似乎不是最好的方法。

謝謝。

您可以將clock_nanosleepTIMER_ABSTIME標志一起使用,以使用絕對時間而不是睡眠的相對時間。 這將避免錯誤累積問題和競爭條件,其中程序被中斷,另一個進程在獲取當前時間之后但在調用睡眠之前被安排。

或者,您可以將POSIX定時器( timer_create )與信號處理程序一起使用,其中您選擇的信號在您的所有線程中被阻止,或者在新線程中使用定時器傳遞,該線程表示您的線程正在等待的條件變量或信號量。

取決於您需要多少准確度:

  • 你可以使用clock_gettime這是非常准確的(~10MHz)。 (使用實時或單調時鍾)
  • 如果分辨率和開銷是沒有問題的,而是你想獲得真實世界的時候,你也可以的gettimeofday

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM