在一般的多线程访问共享对象的程序中,一般是通过加锁来保证读/写访问的是正确的值:
Lock(object)
{
//范围并处理共享数据
}
但这样的做法在每次访问共享对象的时候都有可能造成了线程的上下文切换,影响了程序的效率。
对于简单的多线程访问,可以使用volatile关键字确保该共享对象volatile are not subject to compiler optimizations that assume access by a single thread." data-guid="2ab5b8fdd040c8f707f3d233fceeec38">不受编译器优化(假定由单个线程访问)的限制。 这样可以确保该字段在任何时间呈现的都是最新的值
public class Worker
{
// This method is called when the thread is started.
public void DoWork()
{
while (!_shouldStop)
{
Console.WriteLine("Worker thread: working...");
}
Console.WriteLine("Worker thread: terminating gracefully.");
}
public void Req