我在unistd.h中找到了usleep函數,我認爲在每個動作之前等待一段時間是有用的。但是我發現線程只是在睡眠狀態,如果它沒有收到任何信號。例如,如果我按下一個按鈕(我正在使用OpenGL,但問題是關於time.h和unistd.h的更具體的),線程會被喚醒,而我沒有得到我想要的。 在time.h中有睡眠函數接受一個整數,但整數太多(我想等待0.3秒),所以我使用usleep。 我問是否有一個函數需要毫秒的時間(從任何GNU或任何庫)。 它應該像time()一樣工作,但返回毫秒而不是秒。是否可能?花費時間以毫秒爲單位
4
A
回答
4
這是一個跨平臺的功能,我使用:
unsigned Util::getTickCount()
{
#ifdef WINDOWS
return GetTickCount();
#else
struct timeval tv;
gettimeofday(&tv, 0);
return unsigned((tv.tv_sec * 1000) + (tv.tv_usec/1000));
#endif
}
+0
我需要一個像time()這樣的函數,但是會得到ms。 – 2012-04-11 15:58:18
+0
@RamyAlZuhouri:好的,我編輯了我的答案。 – trojanfoe 2012-04-11 17:02:04
7
如果你有提升,你可以這樣來做:
#include <boost/thread.hpp>
int main()
{
boost::this_thread::sleep(boost::posix_time::millisec(2000));
return 0;
}
這個簡單的例子,你可以在代碼中看到,睡2000ms。
編輯:
好吧,我想我明白這個問題,但後來我讀的意見,現在我不那麼肯定了。
也許你想知道自從某個點/事件以來經過了多少毫秒?如果是這樣的話,那麼你可以這樣做:
#include <boost/chrono.hpp>
#include <boost/thread.hpp>
#include <iostream>
int main()
{
boost::chrono::high_resolution_clock::time_point start = boost::chrono::high_resolution_clock::now();
boost::this_thread::sleep(boost::posix_time::millisec(2000));
boost::chrono::milliseconds ms = boost::chrono::duration_cast<boost::chrono::milliseconds> (boost::chrono::high_resolution_clock::now() - start);
std::cout << "2000ms sleep took " << ms.count() << "ms " << "\n";
return 0;
}
(請原諒排長)
相關問題
- 1. 如何獲得以毫秒爲單位的C所花費的時間? (Windows)
- 2. Mongodb時間戳,以毫秒爲單位
- 3. 時間以毫秒爲單位計算
- 4. NetStream.seek以毫秒爲單位
- 5. TimeSpan.ParseExact以毫秒爲單位
- 6. 轉換「時間」,「單位」,以毫秒爲單位
- 7. 使用SPARQL獲取當前時間(以秒/毫秒爲單位)?
- 8. 帶時間戳的搜索時間(以毫秒爲單位)influxdb
- 9. 典型時間格式的時間(以毫秒爲單位)
- 10. TimePicker以毫秒爲單位倒計時
- 11. 時間選擇器以毫秒爲單位以毫秒爲單位計算出錯誤的值
- 12. 以毫秒爲單位的TImespan,以分鐘和秒爲單位
- 13. java將時間戳以秒爲單位轉換爲以毫秒爲單位的時間戳
- 14. 以毫秒爲單位檢測秒數
- 15. R 2列之間的時間差(以毫秒爲單位)
- 16. 來自BPM(Midi tempo)的時間間隔(以毫秒爲單位)
- 17. 時間以秒或毫秒
- 18. Javascript以毫秒爲單位顯示毫秒數:小時:無秒數分鐘
- 19. 在Excel中增加時間以毫秒爲單位
- 20. 以毫秒爲單位獲取Dateobject時間戳
- 21. 如何獲得以毫秒爲單位的時間?
- 22. 以毫秒爲單位的HTML5時間元素
- 23. 以毫秒爲單位顯示遊戲時間Xcode
- 24. 以毫秒爲單位獲取當前時間Cocos2d
- 25. dc.js線圖,時間變化以毫秒爲單位
- 26. 以毫秒爲單位解析Perl的時間戳
- 27. 以毫秒爲單位獲取ViewPager視圖的時間
- 28. Android:時間循環(以毫秒爲單位)
- 29. ffmpeg視頻編輯命令(以毫秒爲單位)時間戳
- 30. JavaScript日期時間戳到SqlDateTime以毫秒爲單位
你能清楚哪些是你不喜歡'usleep'更清楚了嗎?盡我所能地告訴它它確實是你想要的(當然,除了是μs而不是ms)。 – 2012-04-11 15:52:32
我不明白這個問題。不是'microtime'你在找什麼? – nothrow 2012-04-11 15:52:41
問題是我不想要一個睡眠函數,而是一個「getTime in ms」函數。因爲如果線程休眠,它可能會被一些信號喚醒(例如:我按下一個鍵)。 – 2012-04-11 15:57:07