多執行緒學習(四)

2021-08-02 00:22:57 字數 701 閱讀 9273

boost::shared_mutex 這個配合boost::shared_lock類這個相當於讀鎖

巢狀鎖不是乙個很好的選擇,盡量嘗試更改資料結構

條件和期望

執行緒會等待乙個特定事件的發生,或者等待某一條件達成。這可能定期檢查任務完成。需要進行同步,可以利用期望和條件達成同步。

例子如下:

class data_chunk ;

mutex mut;

queuedata_queue;

condition_variable data_cond;

bool more_data_to_prepare()

data_chunk prepare_data()

void data_preparation_thread()

}void process(data_chunk)

bool is_last_chunk(data_chunk)

void data_processing_thread() );

std::cout << "wait" << std::endl;

data_chunk data = data_queue.front();

data_queue.pop();

lk.unlock();

process(data);

if (is_last_chunk(data)) }

}

多執行緒學習 執行緒同步 四

問題 子執行緒迴圈10次,回到主線程執行100次,接著又回到子執行緒執行10次,再回到主線程執行100次,如此迴圈50次,該如何實現?public class threadcommunicationstudy start for int i 1 i 50 i 資源類 class bussiness ...

多執行緒學習筆記四

執行緒範圍內的資料共享 time 上午10 10 13 author retacn yue email zhenhuayue sina.com public class threadlocaltest start 存放全域性變數 time 上午10 27 49 author retacn yue e...

java多執行緒學習 四

本篇介紹synchronized 非this物件x 方式的同步,x一般是引數或者例項變數 package chapter2.synblockstring3 演示不同執行緒持有不同的物件監視器,呼叫是非同步的 ta的物件監視器是anystring,而b的物件監視器是類例項物件 a begin b be...