C 標準執行緒庫之當前執行緒管理

2021-08-29 16:07:50 字數 1400 閱讀 4963

有時需要對當前執行的子執行緒進行一些額外的處理,如:使執行緒休眠一段時間,再次排程等。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 ...