C#多线程---Semaphore实现线程同步
2021-06-27 20:04
标签:span 初始 col sys can mit 多线程 system eth 一、简介 Semaphore类限制可同时访问某一资源或资源池的线程数。线程通过调用 WaitOne方法将信号量减1,并通过调用 Release方法把信号量加1。 构造函数:public Semaphore(int initialCount,int maximumCount);通过两个参数来设置信号的初始计数和最大计数。 二、例子 运行结果如下: C#多线程---Semaphore实现线程同步 标签:span 初始 col sys can mit 多线程 system eth 原文地址:https://www.cnblogs.com/3xiaolonglong/p/9651064.html 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading;
6 using System.Threading.Tasks;
7
8 namespace ThreadMutex
9 {
10 class Program
11 {
12 private static Mutex mutex = new Mutex();
13 private static Semaphore semaphore = new Semaphore(3, 10);
14 private static int sum = 0;
15 static void Main(string[] args)
16 {
17 for (int i = 0; i 10; i++)
18 {
19 Taskint> task = new Taskint>(ThreadFunction);
20 task.Start();
21 }
22 Console.WriteLine($"{DateTime.Now} task started!");
23 Console.Read();
24
25 }
26 private static int ThreadFunction()
27 {
28 Thread.Sleep(100);
29 if(semaphore.WaitOne(2000))
30 {
31 Console.WriteLine($"Thread {Thread.CurrentThread.ManagedThreadId} get semaphore successed!");
32 }
33 else
34 {
35 Console.WriteLine($"Thread {Thread.CurrentThread.ManagedThreadId} get semaphore failed!");
36 }
37
38 return sum;
39 }
40 }
41 }