2011-06-13 26 views
0

的不同細胞我有一個全球性的矩陣(矢量型矢量<焦炭<>>),我需要多個線程能夠寫入它在我說話的方式。 起初,我想過只使用一個互斥體,因爲我怕對競爭條件(接入+寫可能不是原子) 然後我用互斥的矩陣。我對此不太確定。這似乎是同樣的問題。線程如何編寫成矩陣

你能幫助我嗎?如果需要,我會添加更多細節。 感謝

回答

1

你只需要一個互斥量,以保護由多個線程,在這些線程中的至少一個修改對象訪問的對象。

如果你的矩陣之前調整任何線程訪問它(線程開始之前,例如),那麼你只有在多個線程訪問同一個小區需要一個互斥體。如果你的線程正在訪問不同的單元格,那麼提供它們都不會調整矩陣的大小,一切都會好的。

如果一個線程寫入到一個細胞,並從同一小區的其他讀取,那麼他們訪問該小區之前兩個線程必須鎖定相同的互斥。如果兩個線程寫入同一個單元,那麼兩個線程都必須鎖定相同的互斥。這可以是與用於其他單元的不同的互斥體,也可以是同一個互斥體。

如果一個線程修改矩陣結構,同時任何其他線程正在訪問矩陣然後涉及必須鎖定相同的互斥的所有線程。這對於用於單個單元的任何互斥體可以是不同的互斥體,或者它可以是相同的互斥體。

+0

是的,矩陣不會調整大小。謝謝,它工作。 – 2011-06-15 04:07:14