C#多线程同步(一)【计数器】
来源:互联网 发布:淘宝特卖鱼具 编辑:程序博客网 时间:2024/06/06 12:28
罗马人凯撒大帝,威震欧亚非三大陆,临终告诉侍者说:“请把我的双手放在棺材外面,让世人看看,伟大如我凯撒者,死后也是两手空空。
ICounter.cs类:
interface ICounter { void Increment(); void Decrement(); }
Counter.cs类:
class Counter : ICounter { private int _count = 0; public int Count { get { return _count; } } public void Increment() { _count ++; } public void Decrement() { _count--; } }
CounterLock.cs代码:
class CounterLock : ICounter { private int _count; public int Count { get { return _count; } } public void Increment() { Interlocked.Increment(ref _count); } public void Decrement() { Interlocked.Decrement(ref _count); } }
Test.cs代码:
class Test { public static void TestCounter(ICounter c) { for (int i = 0; i < 100000; i ++) { c.Increment(); c.Decrement(); } } public static void RunTest() { var c1 = new Counter(); var t1 = new Thread((() => TestCounter(c1))); var t2 = new Thread((() => TestCounter(c1))); var t3 = new Thread((() => TestCounter(c1))); t1.Start(); t2.Start(); t3.Start(); t1.Join(); t2.Join(); t3.Join(); Console.WriteLine("总数: {0}", c1.Count); Console.WriteLine("--------------------------"); Console.WriteLine("普通计数器"); Console.WriteLine(""); var c2 = new CounterLock(); t1 = new Thread((() => TestCounter(c2))); t2 = new Thread((() => TestCounter(c2))); t3 = new Thread((() => TestCounter(c2))); t1.Start(); t2.Start(); t3.Start(); t1.Join(); t2.Join(); t3.Join(); Console.WriteLine("总数: {0}", c2.Count); Console.WriteLine("--------------------------"); Console.WriteLine("线程同步的计数器"); Console.ReadKey(); } }
运行结果如图:
0 0
- C#多线程同步(一)【计数器】
- Java多线程--同步计数器CountDownLatch
- C#多线程同步1
- C#多线程同步2
- C#多线程同步3
- c#多线程同步,信号
- C#多线程同步
- c# 多线程同步
- C#多线程同步
- C# 多线程同步
- C# 多线程同步
- c#多线程同步
- C# 多线程同步
- C#多线程同步技术
- C#多线程同步
- C# 多线程同步
- C# 多线程同步
- C# 多线程同步
- Uva 839
- Python之配置文件模块 ConfigParser
- Spring+Websocket+Redis
- 第23天 网络编程、udp、tcp,ip
- MAC电脑,sublimeText2安装package control和 pylinker 、 Jedi 插件
- C#多线程同步(一)【计数器】
- mybatis 报错 Specified class is an interface
- 异常继承
- 【逻辑思考】我们要有把坏事看成好事的能力
- nginx搭建支持http和rtmp协议的流媒体服务器之二 【转】
- Thinking in java4 Exception
- 【OpenCV入门教程之八】线性邻域滤波专场:方框滤波、均值滤波与高斯滤波
- c++网络多人五子棋
- 在树莓派上使用Python实现对温度,湿度以及光照强度的实施测量