这几天在看C#多线程的东东,确保多个线程不死锁是比较难的,但要死锁很容易。试着写了段死锁的代码,见下文。 环境:.NET 2.0 基本思路:学OS时的经典问题,两个线程抢占两个资源,线程1抢到了资源A,还需要资源B;线程2抢到了资源B,还需要资源A;结果就死锁了。
1using System;
2using System.Collections.Generic;
3using System.Text;
4using System.Threading;
5![]()
6namespace MultiThreadTest
7![]()
运行结果:
StartFromLocker1 got locker1 StartFromLocker2 got locker2 StartFromLocker1 waiting for locker2 StartFromLocker2 waiting for locker1