多线程情况下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;
------------------------------------
承接
**视觉检测软件开发及调试
**工业软件开发
**上位机软件开发
wechat:luoran2024
qq:565934058
email:taoyuansu@qq.com
微信公众号:EFunVision
微信公众号:小兔子爱学习
------------------------------------

浙公网安备 33010602011771号