|
|
- private static readonly object _lock = new object();
- private static int _counter = 0;
- static void Main(string[] args)
- {
- Demo02();
- Console.ReadLine();
- }
- static void Increment()
- {
- lock (_lock)
- {
- _counter++;
- }
- }
- static async Task Demo02()
- {
- Task task1 = Task.Run(() =>
- {
- lock (_lock)
- {
- Console.WriteLine("释放锁,等待资源锁");
- Monitor.Wait(_lock);//释放锁,等待资源锁
- Console.WriteLine("获得资源锁");
- }
- });
- Task task2 = Task.Run(async () =>
- {
- await Task.Delay(1000);
- lock (_lock)
- {
- Console.WriteLine("释放锁资源");
- Monitor.Pulse(_lock);//释放锁资源
- }
- });
- await Task.WhenAll(task1, task2);
- }
- static void Demo01()
- {
- Parallel.For(0, 1000, i =>
- {
- Increment();
- });
- Console.WriteLine(_counter);
- }
- }
复制代码
|
|