net 多线程学习 16 Thread.VolatileRead 立即将这个变量从CPU读取到内存中


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

namespace VolatileRead
{
    class Program
    {
        static void Main(string[] args)
        {
            var isStop = 0;

            var t = new Thread(() =>
            {
                var isSuccess = false;

                while (isStop == 0)
                {
                    //立即将这个变量从CPU读取到内存中
                    Thread.VolatileRead(ref isStop);
                    //立马将此变量的值写入所有CPU中
                    Thread.VolatileWrite(ref isStop,2);
                    isSuccess = !isSuccess;
                }
            });

            t.Start();

            Thread.Sleep(1000);
            isStop = 1;
            t.Join();

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

    }
}

作者:spike

分类: Net

创作时间:2023-06-25

更新时间:2024-12-09

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