如果我在一個線程上創建一個變量,然後使用ManualResetEvent
的WaitOne()
方法阻塞,直到另一個線程將一個值分配給同一變量併發信號給EventWaitHandel
。當我在第一個線程上讀取變量時,我保證始終獲得由其他線程分配的值?我擔心由於某些優化,我無法從CPU緩存中獲取值,因爲據我所知,我沒有使用任何內存障礙。)。如果使用EventWaitHandel,從另一個線程讀取時是否從一個線程「線程安全」分配了變量?
例如
var str = "multi-threading is hard!";
var mre = new ManualResetEvent(false);
Task.Factory.StartNew(() =>
{
str = Console.ReadLine();
mre.Set();
));
mre.WaitOne();
Console.WriteLine(str);
你說你會用'的WaitOne ()'。哪裏?我希望它在Console.WriteLine之前。 – Georg
是的,感謝那 – markmnl