c#建立一个控制台程序,建立四个线程,每个线程的功能为:输出0-9 共计10个数字,要求线程的输出为连续输出,借助信号量或者互斥锁进行实现。
时间: 2024-02-17 13:03:21 浏览: 89
C#编写的控制台程序
好的,以下是一个 C# 控制台程序,它创建了四个线程并使用互斥锁控制它们的输出。每个线程输出数字0到9,共计10个数字。
```c#
using System;
using System.Threading;
class Program
{
static Mutex mutex = new Mutex();
static int count = 0;
static void PrintNumber(int id)
{
for (int i = 0; i < 10; i++)
{
mutex.WaitOne();
Console.WriteLine($"Thread {id} Output: {count}");
count++;
mutex.ReleaseMutex();
}
}
static void Main(string[] args)
{
Thread t1 = new Thread(() => PrintNumber(1));
Thread t2 = new Thread(() => PrintNumber(2));
Thread t3 = new Thread(() => PrintNumber(3));
Thread t4 = new Thread(() => PrintNumber(4));
t1.Start();
t2.Start();
t3.Start();
t4.Start();
t1.Join();
t2.Join();
t3.Join();
t4.Join();
}
}
```
在这个程序中,我们使用了一个互斥锁(`Mutex`)来确保每个线程的输出是连续的。每个线程输出前会先等待互斥锁,输出后再释放锁。
注意到在这个程序中,我们使用了一个静态变量 `count` 来记录当前输出的数字。由于多个线程会同时访问这个变量,我们需要使用互斥锁来防止竞争条件的发生。
最后,我们创建了四个线程并启动它们,等待它们全部结束后程序才会退出。
希望这个程序能够帮助你理解如何使用互斥锁来控制多个线程的输出。
阅读全文