我有幾個對象需要在C++中的不同線程上執行操作。我知道有必要同時鎖定多個線程可能使用的變量,但是如果每個線程正在訪問(寫入)同一對象的不同數據成員,該怎麼辦?例如,每個線程正在調用對象的不同方法,並且沒有任何方法調用相同的數據成員。只要我不訪問相同的數據成員,還是需要鎖定整個對象,是否安全?從C++中的2個不同線程訪問屬於同一對象的不同數據成員
我已經找過解釋和這個主題的細節,但每個例子似乎集中在單個變量或非成員函數。
總結: 我可以安全地訪問同一對象的2名不同的數據成員來自2個不同的線程,但不將鎖定整個對象呢?
您如何確保您永遠不會從兩個線程同時訪問同一個成員? – 2012-04-26 13:54:34
不能爲每個結構變量鎖定一個鎖,而不是每個結構鎖。細粒鎖定?? – 2012-04-26 13:55:10