這是一個非常基本的問題,我想它是,但我找不到任何明確的答案。是SynchronizationContext.Post()
線程安全嗎?SynchronizationContext.Post()線程安全嗎?
我有一個成員變量,它包含主線程的上下文,而_context.Post()
被從多個線程中調用。我想Post()
可以在對象上同時調用。我是否應該像
lock (_contextLock) _context.Post(myDelegate, myEventArgs);
或者那是不必要的?
編輯:「任何實例成員不能保證線程安全」
MSDN指出,如果我把我的lock()
,然後呢?
看着反彙編的代碼,這個方法只是調用ThreadPool.QueueUserWorkItem,根據msdn,IS線程安全。 – 2010-05-18 19:58:45
@菲爾:這並不奇怪。不幸的是,微軟已經有效地保留了在未來版本或者服務包中以一種可以使其當前的線程安全行爲無效的方式來改變實現的權利。我的猜測是他們真的打算讓這個類擁有線程安全的實例方法,並且他們只是搞砸了文檔。但是,這又是一個假設。 – 2010-05-18 20:07:28
考慮到它的用法,將它變成無法線程安全的將是愚蠢的! – RichardOD 2010-06-13 11:35:59