Interlocked说明及使用
程序员文章站
2022-05-27 23:02:41
...
Interlocked 为多个线程共享的变量提供原子操作。
主要方法:
//替换usingResource为1,返回原始值 Interlocked.Exchange(ref usingResource, 1); //usingResource增加4 Interlocked.Add(ref usingResource, 4); //比较替换。如果值usingResource为4 则替换为10 Interlocked.CompareExchange(ref usingResource, 10, 4); //usingResource-- Interlocked.Decrement(ref usingResource); //usingResource++ Interlocked.Increment(ref usingResource);
Interlocked.Exchange可实现并行不阻塞锁的功能,
//一种否认重入的简单方法。多线程争用时只有一个线程执行进来。 static bool UseResource() { //返回0则进入方法执行 if (0 == Interlocked.Exchange(ref usingResource, 1)) { Console.WriteLine("{0} acquired the lock", Thread.CurrentThread.Name); //访问非线程安全资源的代码将在这里。 //模拟一些工作 //Thread.Sleep(500); Console.WriteLine("{0} exiting lock", Thread.CurrentThread.Name); //释放锁,重新设置为0 Interlocked.Exchange(ref usingResource, 0); return true; } else { Console.WriteLine(" {0} was denied the lock", Thread.CurrentThread.Name); return false; } }
上一篇: 路由器和交换机为何不通?
下一篇: HTML文本结构及常用标签
推荐阅读
-
PHP static 静态变量和属性方法使用说明
-
php关于array_multisort多维数组排序的使用说明
-
Ajax+PHP快速上手及简单应用说明_PHP教程
-
php生成二维码的几种方式整理及使用实例_php技巧
-
$.format,jquery.format 使用说明_jquery
-
jquery append()方法与html()方法的区别及使用介绍_jquery
-
Python的网络编程库Gevent的安装及使用技巧
-
too simple too naive PHP中simplexml_load_string函数使用说明
-
php strcmp()函数使用说明
-
实例说明Python中比较运算符的使用