有時需要對當前執行的子執行緒進行一些額外的處理,如:使執行緒休眠一段時間,再次排程等。c++11標準庫提供了管理當前執行緒的函式,這些函式都定義於命名空間this_thread
#include
inline thread::id std::this_thread::
get_id()
;// 返回當前執行緒id
#include
#include
void
func()
intmain()
#include
inline
void std::this_thread::
yield()
;// 使當前執行緒進入執行緒佇列,重新進行排程,來允許其他執行緒執行。
// 依賴於底層的系統排程機制和系統狀態。
需要注意的是,雖然t1執行緒重新排程,但是t2執行緒也不一定能先於t1輸出。
#include
template
<
typename _rep,
typename _period>
inline
void std::this_thread::
sleep_for
(const chrono::duration<_rep, _period>
& __rtime)
;// 只要知道其引數乙個時間間隔,後續會介紹這個新時間類
// 可以使當前執行緒休眠一段時間
template
<
typename _clock,
typename _duration>
inline
void std::this_thread::
sleep_until
(const chrono::time_point<_clock, _duration>
& __atime)
;// 只要知道其引數乙個時間點,後續會介紹這個新時間類
// 可以使當前執行緒休眠到某個時間點
#include
#include
// 用到了時間函式, 後續會介紹
// c++14標準的
using
namespace std::chrono_literals;
void
func()
intmain()
這裡需要用到新時間類,這個時間類提供了與**執行時間無關的時間測量(穩定時鐘),對於超時是非常重要的,後續會專門談到。 C 11新標準執行緒庫之方法五
include include include include using namespace std class a a const a a m i a.m i a private int m i void myprint const int i const a mybuf int main in...
C 錯誤 「當前執行緒不再單執行緒單元中」
c 錯誤 當前執行緒不再單執行緒單元中 因為畢業設計需要使用mapobjects2元件。開始使用時正常,但是是不是就發生了問題,不知道怎麼解決,因為馬上要答辯了,不能在答辯的時候不能出現問題。在網上找了一點資訊,先修復試試!在網上查到的幫助 以下是幫助的內容,但是在 msdn 你的 main 是不是...
c 獲取執行緒id 高效獲取當前執行緒的 id
可以利用微軟提供的 api,輕鬆獲取當前執行緒的 id int id getcurrentthreadid linux 平台一般用的是 pthread 執行緒庫,但它並不提供獲取執行緒內部 id 的方法。可以通過系統呼叫得到當前執行緒的 id include for syscall include ...