C11新增多執行緒支援庫-threads.h參考手冊
·
執行緒管理 int thrd_create(thrd_t *thr, thrd_start_t func, void *arg); thrd_create建立一個新執行緒,該執行緒的工作就是執行func(arg)呼叫,程式設計師需要為執行緒編寫一個函式,函式簽名為:thrd_start_t ,即int (*)(void*)型別的函式。新建立的執行緒的識別符號存放在thr內。 thrd_t thrd_current(void); thrd_current函式返回撥用執行緒的識別符號。 int thrd_detach(thrd_t thr); thrd_detach會通知作業系統,當該執行緒結束時由作業系統負責回收該執行緒所佔用的資源。 int thrd_equal(thrd_t thr0, thrd_t thr1); thrd_equal用於判斷兩個執行緒識別符號是否相等(即標識同一執行緒),thrd_t是標準約定的型別,可能是一個基礎型別,也可能會是結構體,開發人員應該使用thrd_equal來判斷兩者是否相等,不能直接使用==。即便==在某個平臺下表現出來是正確的,但它不是標準的做法,也不可跨平臺。 void thrd_exit(int res) thrd_exit函式提早結束當前執行緒,res為它的退出狀態碼。這與程序中的exit函式類似。 int thrd_join(thrd_t thr, int *res) thrd_join將阻塞當前執行緒,直到執行緒thr結束時才返回。如果res非空,那麼res將儲存thr執行緒的結束狀態碼。如果某一執行緒內沒有呼叫thrd_detach函式將自己設定為detach狀態,那麼當它結束時必須由另外一個執行緒呼叫thrd_join函式將它留下的僵死狀態變為結束,並回收它所佔用的系統資源。 void thrd_sleep(const xtime *xt) thrd_sleep函式讓當前執行緒中途休眠,直到由xt指定的時間過去後才醒過來。 void thrd_yield(void) thrd_yield函式讓出CPU給其它執行緒或程序。 互斥物件和函式 threads.h中提供了豐富的互斥物件,使用者只需在mtx_init初始化時,指定該互斥物件的型別即可。 int mtx_int(mtx_t *mtx, int type); mtx_init函式用於初始化互斥物件,type決定互斥物件的型別,一共有下面6種型別: mtx_plain –簡單的,非遞迴互斥物件 mtx_timed –非遞迴的,支援超時的互斥物件 mtx_try…