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...