net 多线程学习 15 Thread.MemoryBarrier 防止CLR优化

https://blog.csdn.net/weixin_34090643/article/details/85079470


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace MemoryBarrier
{
    class Program
    {
        static void Main(string[] args)
        {
                var isStop = false;
                var t = new Thread(() =>
                {
                    var isSuccess = false;
                    while (!isStop)
                    {
                        //在此方法之前的内存写入都要及时从cpu cache中更新到 memory
                        // 在此方法之后的内存读取都要从memory中读取,而不是cpu cache
                        Thread.MemoryBarrier();
                        isSuccess = !isSuccess;
                    }
                });
                t.Start();
                Thread.Sleep(1000);
                isStop = true;
                t.Join();

                Console.WriteLine("主线程执行结束!");
                Console.ReadLine();
        }
    }
}

作者:spike

分类: Net

创作时间:2023-06-25

更新时间:2024-12-09

联系方式放在中括号之中例如[[email protected]],回复评论在开头加上标号例如:#1