C# lock关键字 线程同步问题

2024-12-28 14:56:06
推荐回答(1个)
回答1:

题主对 lock 理解有误。

lock 是保证同一段代码(注意是“同一段代码”),多个线程每次只能有一个线程进入临界区的。

你分别在线程1和线程2各自的代码里加锁是不能够保证互斥的,因为线程1永远不会去执行线程2里你加锁的那段代码,同理线程2也一样。

你应该使用信号量 System.Threading.Semaphore 来保证互斥。