多线程情况下Barrier、volatile使用

1、Barrier使用

//定义两个现场情况下使用
public readonly Barrier SyncBarrier = new Barrier(2);
//初始化
            SyncBarrier = new Barrier(2, (bar) =>
            {
                System.Threading.Interlocked.Increment(ref ProcessManager.Instance.CurrentRunIndex);
            });
//线程1中调用
 ProcessManager.Instance.SyncBarrier.SignalAndWait(token1);


//线程2中调用
 ProcessManager.Instance.SyncBarrier.SignalAndWait(token2);

异常停止Barrier后要记得复位

ProcessManager.Instance.SyncBarrier.RemoveParticipant();

 若复位不成功,仍需要重新初始化

2、volatile使用

volatile 是一个在多种编程语言(如 C/C++、Java、C#)中都存在的关键字,它的主要作用是防止编译器对变量的读写操作进行优化,确保每次访问都直接从内存中读取或写入。

private volatile bool synchronousMark = false;

 

posted @ 2026-04-21 09:47  echo-efun  阅读(6)  评论(0)    收藏  举报