[.Net线程处理系列]专题六:线程同步——信号量和互斥体
来源:互联网 发布:淘宝0.01元刷信誉技巧 编辑:程序博客网 时间:2024/06/03 06:19
- class Program
- {
- // 初始信号量计数为0,最大计数为10
- public static Semaphore semaphore =new Semaphore(0,10);
- public static int time = 0;
- static void Main(string[] args)
- {
- for (int i = 0; i < 5; i++)
- {
- Thread test = new Thread(new ParameterizedThreadStart(TestMethod));
- // 开始线程,并传递参数
- test.Start(i);
- }
- // 等待1秒让所有线程开始并阻塞在信号量上
- Thread.Sleep(500);
- // 信号量计数加4
- // 最后可以看到输出结果次数为4次
- semaphore.Release(4);
- Console.Read();
- }
- public static void TestMethod(object number)
- {
- // 设置一个时间间隔让输出有顺序
- int span = Interlocked.Add(ref time, 100);
- Thread.Sleep(1000 + span);
- //信号量计数减1
- semaphore.WaitOne();
- Console.WriteLine("Thread {0} run ", number);
- }
- }
- using System;
- using System.Threading;
- namespace SemaphoreSample
- {
- class Program
- {
- // 初始信号量计数为4,最大计数为10
- public static Semaphore semaphore =new Semaphore(4,10,"My");
- public static int time = 0;
- static void Main(string[] args)
- {
- for (int i = 0; i < 3; i++)
- {
- Thread test = new Thread(new ParameterizedThreadStart(TestMethod));
- // 开始线程,并传递参数
- test.Start(i);
- }
- // 等待1秒让所有线程开始并阻塞在信号量上
- Thread.Sleep(1000);
- Console.Read();
- }
- public static void TestMethod(object number)
- {
- // 设置一个时间间隔让输出有顺序
- int span = Interlocked.Add(ref time, 500);
- Thread.Sleep(1000 + span);
- //信号量计数减1
- semaphore.WaitOne();
- Console.WriteLine("Thread {0} run ", number);
- }
- }
- }
- class Program
- {
- public static Mutex mutex = new Mutex();
- public static int count;
- static void Main(string[] args)
- {
- for (int i = 0; i < 10; i++)
- {
- Thread test = new Thread(TestMethod);
- // 开始线程,并传递参数
- test.Start();
- }
- Console.Read();
- }
- public static void TestMethod()
- {
- mutex.WaitOne();
- Thread.Sleep(500);
- count++;
- Console.WriteLine("Current Cout Number is {0}", count);
- mutex.ReleaseMutex();
- }
- }
- class Program
- {
- public static Mutex mutex = new Mutex(false,"My");
- static void Main(string[] args)
- {
- Thread t = new Thread(TestMethod);
- t.Start();
- Console.Read();
- }
- public static void TestMethod()
- {
- mutex.WaitOne();
- Thread.Sleep(5000);
- Console.WriteLine("Method start at : " + DateTime.Now.ToLongTimeString());
- mutex.ReleaseMutex();
- }
- }
0 0
- [.Net线程处理系列]专题六:线程同步——信号量和互斥体
- [C# 线程处理系列]专题七:线程同步——信号量和互斥体
- [C# 线程处理系列]专题六:线程同步——事件构造
- [.Net线程处理系列]专题五:线程同步——事件构造
- [.Net线程处理系列]专题四:线程同步
- 线程同步—条件变量和信号量
- [C# 线程处理系列]专题五:线程同步
- 线程同步——信号量
- 线程同步——信号量
- 线程同步——信号量
- 线程同步——信号量
- 线程同步—信号量(闭环控制)
- [.Net 线程处理系列]专题一:线程基础
- 线程同步的方法—互斥锁、信号量和条件变量
- Windows线程同步——信号量对象
- [.Net线程处理系列]专题二:线程池中的工作者线程
- [.Net线程处理系列]专题三:线程池中的I/O线程
- 【Windows】线程漫谈——线程同步之信号量和互斥量
- MAJOR、MINOR、MKDEV理解
- u盘中存放的数据无法正常打开怎么恢复
- 东北大学计算机专业研究生入学考试2005年真题原题
- [.Net线程处理系列]专题五:线程同步——事件构造
- Repeater 分页学习分享
- [.Net线程处理系列]专题六:线程同步——信号量和互斥体
- 域名解析详解
- 使IE兼容placeholder属性
- [.Net 多线程处理系列专题七——对多线程的补充
- ip地址与整型互转各种方法总结
- 正则表达式使用 NSPredicate使用
- Intellij IDEA 调试Hadoop 源码
- ECMALL的登录过程机制解析
- Java编程思想读书笔记——第四章