3
將C++對象(地圖,矢量等)從一個線程傳遞到另一個線程的正確方法是什麼?我擔心競爭條件,過時的值等。我正在使用boost線程。使用boost :: thread將C++對象從一個線程傳遞到另一個線程的正確方法是什麼?
在此先感謝!
將C++對象(地圖,矢量等)從一個線程傳遞到另一個線程的正確方法是什麼?我擔心競爭條件,過時的值等。我正在使用boost線程。使用boost :: thread將C++對象從一個線程傳遞到另一個線程的正確方法是什麼?
在此先感謝!
這完全取決於這個對象「做什麼」。如果它是獨立的,即不保存可能在原始線程中使用的其他對象的指針/引用 - 那麼似乎沒有問題。如果OTOH 確實包含對仍在原始線程中可能正在使用的一些數據的引用 - 它的訪問應該被同步。
而且,當然,應該避免傳遞一個複雜的對象。
我什麼都不做,它是一個消息,它有由工作者線程創建,現在工作者線程正在從工作者傳遞到「發送者」線程,以便將消息發送給某個對等者。 – xSNRG
「正確的方式」通常是一個主觀的問題,儘管我認爲這取決於解釋。 – Rapptz
簡而言之,我希望接收線程「看到」發送線程已經傳遞的對象,以便重新排序由於讀取陳舊值而導致的問題或問題不會發生。 – xSNRG
使用隊列(鎖定空閒或正確鎖定)。 – Nim