您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

说明C#中volatile关键字的用法

说明C#中volatile关键字的用法

我已经取得了一个可行的例子!

主要思想来自Wiki,但C#有所更改。Wiki文章针对C ++的静态字段演示了这一点,似乎C#总是仔细地将请求编译为静态字段…而我以非静态示例为例:

如果您在 模式下并且 (即使用Ctrl + F5)运行此示例,则该行将while (test.foo != 255)被优化为“ while(true)”,并且该程序永不返回。但是添加volatile关键字后,您始终会获得“确定”。

class Test
{
    /*volatile*/ int foo;

    static void Main()
    {
        var test = new test();

        new Thread(delegate() { Thread.Sleep(500); test.foo = 255; }).Start();

        while (test.foo != 255) ;
        Console.WriteLine("OK");
    }
}
c# 2022/1/1 18:18:03 有488人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶