可能重複:
Can a C# thread really cache a value and ignore changes to that value on other threads?使用橫紗布爾中止線程
比方說我們有這樣的代碼:
bool KeepGoing = true;
DataInThread = new Thread(new ThreadStart(DataInThreadMethod));
DataInThread.Start();
//bla bla time goes on
KeepGoing = false;
private void DataInThreadMethod()
{
while (KeepGoing)
{
//Do stuff
}
}
}
現在的想法是,使用布爾是一種終止線程的安全方法,但是因爲調用線程上存在該布爾值會導致任何問題?
那布爾僅用於調用線程停止線程所以它不喜歡它的其他地方正在使用
KeepGoing只是程序中的成員/字段。 – Jon 2010-03-25 09:32:09
使用volatile的x64系統有問題嗎?我讀過這個「使用x64架構,這不是最優化的」。那是什麼意思? – Jon 2010-03-25 09:37:31
@Jon - 很難回答這種情況,但我認爲*這意味着它可能不會被緩存在寄存器中。但國際海事組織,你應該去代碼,總是*工作。 – 2010-03-25 11:55:52