c 多執行緒詳解

2021-07-27 23:44:30 字數 1229 閱讀 3309

**自我的部落格

atomic_flag

thread

mutex

recursive_timed_mutex 定時遞迴mutex類

lock類

unique_lock 與mutex raii相關,方便執行緒對互斥量上鎖,但提供了更好的上鎖和解鎖控制

其他型別

函式 try_lock() 嘗試同時對多個互斥量上鎖,如果互斥量被其他執行緒占有,則當前執行緒也不會被阻塞

unlock() 解鎖

condition_variable 條件變數。當condition_variable物件的某個wait函式被呼叫的時候,它使用unique_lock(通過mutex)來鎖住當前執行緒。當前執行緒會一直阻塞,直到另外乙個執行緒在相同的condition_variable物件上呼叫了notification函式來喚醒當前執行緒

templatevoid wait(unique_lock& lck, predicate pred);只有當pred條件為false時呼叫wait()都會阻塞當前執行緒,並且在收到其他執行緒的通知後只有當pred為true時才會被解除阻塞。類似於`while(!pred()) wait(lck);

condition_variable::wait_for()函式 可以指定乙個時間段

condition_variable::wait_until()函式 可以指定乙個時間點

condition_variable::notify_one()介紹 喚醒某個等待執行緒。如果當前沒有等待執行緒,則該函式什麼也不做。如果同時存在多個等待執行緒,則喚醒某個執行緒是不確定的

condition_variable::notify_all()介紹 喚醒所有等待執行緒。

condition_variable_any 通常使用另外的lockable型別來等待。wait函式可以接受任何lockable引數

cv_status 列舉型別

notify_all_at_thread_exit

future

promise的operator=沒有拷貝語義,即普通的賦值操作被禁用。operator=只有move語義,所以promise物件是禁止拷貝的

成員函式

package_task

futures類

其他型別

async()函式

future_category()函式

c 多執行緒unique lock詳解

unique lock是個類模板,工作中,一般lock guard 推薦使用 lock guard取代了mutex的lock 和unlock unique lock比lock guard靈活很多,效率上差一點,記憶體占用多一點。lock guard可以帶第二個引數 std lock guardsbg...

詳解c 多執行緒(四)

為了避免多個執行緒同時修改全域性變數,c 11除了提供互斥量mutex這種方法以外,還提供了atomic模版函式。使用atomic可以避免使用鎖,而且更加底層,比mutex效率更高。為了方便使用,c 11為模版函式提供了別名。atomic別名 atomic bool atomic別名 atomic ...

多執行緒詳解

多執行緒核心概念 普通方法呼叫執行緒 注意 執行緒啟動不一定立即執行,由cpu排程執行 執行緒的三種建立方式 實現runnable介面,繼承執行緒 thread 類,實現callable介面 方法一 繼承執行緒 thread 類 建立執行緒的方法1 繼承thread類,呼叫start啟動執行緒 注意...