乙個執行緒往list中push資料,乙個執行緒遍歷該list然後進行操作。沒有試驗,我猜測可能會有多執行緒安全問題。
解決辦法,如果對遍歷的資料進行加鎖,可能性能有損失。我使用了如下這種方法,記錄在案。
使用乙個臨時的list,比如,
std::listreadables; //遍歷時使用的
std::listreadables_tmp; //push資料的時候使用的。在遍歷之前,再將此list中的資料移到readables中去。
插入執行緒中:
cautolock( &cs );
readables_tmp.push_back( index );
遍歷執行緒中:
for( readables.begin();readables.end();......)
因為只是將新增的臨時list中的資料移動到readables中,所以時間比較快。應該有效率提公升。
std vector與std list的效率比較
一直想知道std中vector和list的效率哪個高些。於是做了乙個簡單的測試,對std vector和list的push back與遍歷操作的效率進行比較。結果如下 1.push back操作 連續push back操作100000個元素,然後clear 一直重複10000次。vector耗時13...
std vector與std list的區別
vector std vector是一種順序容器,可以存放任意型別的物件,如int double bool等 它是乙個動態的陣列 即不需要像普通陣列 如int a 10 一樣預先分配元素個數,它可以根據插入的元素的多少來擴充對應的容量,一般是原先的1.5 2倍。實質為,把之前的資料複製到新的陣列中,...
MFC多執行緒與多執行緒的同步
dword winapi threadproc lpvoid lpparameter 注意這裡threadproc這個名字是可以按自己的要求修改的 handle winapi createthread lpsecurity attributes lpthreadattributes,安全性 size...