宣稱std::vector
爲thread_local
是否有優勢? 像什麼時候有人將std :: vector定義爲thread_local?
static unique_ptr<std::vector<ObjectA>> vecVariable;
的聲明std::vector
作爲thread_local不會使其操作,如pop_back()
和erase()
同步。
由於在每一個STL容器,如果有一個線程修改的容器,然後應無併發線程讀取或寫入同一容器中,所以我不能在並行/多線程環境做erase()
和pop_back()
一個vector
對象。
即使我聲明向量爲thread_local
,我的代碼在其中一個操作中崩潰。我知道我可能需要在鎖定下完成這些操作,但我只是想了解何時有人會將std::vector
定義爲thread_local
?
同時他們將任何變量定義爲thread_local - 當它們每個線程都有自己的實例時。 – davmac