我寫了一個特殊的數據結構,將在.NET庫中可用,並且此數據結構的功能之一是將是線程安全的,前提是隻有一個線程向其寫入數據,並且只有一個線程讀取來自它的數據(讀者線程和寫入器線程可以不同)。如何在.NET中檢測交叉線程訪問(強制執行線程關聯)?
問題是我該如何強制所有的讀操作都是由同一個線程執行的?
我的解決方案是捕獲System.Threading.Thread.ManagedThreadID,並在第一次讀取時將其存儲在私有成員中。然後,在隨後的讀取中檢查ManagedThreadID是否與保存的一致,以及它們是否與拋出異常不同。
這是否足夠,或者是否有不同的更可靠的機制來做到這一點。
注:有這個庫是沒有Windows.Forms的背景下使用的要求..
我不想依靠的讀/寫方法調用者什麼提供作爲輸入。否則,如果我可以可靠地使用ManagedThreadID方法,我想我會使用它。謝謝。 – 2009-05-28 17:46:14