c# 怎么实现线程同步,而不出现死锁的情况,lock的具体用法

来源:百度知道 编辑:UC知道 时间:2024/06/04 20:01:57
最近做一个软件,需要线程同步,而不出现死锁,不并发操作,看了很多相关的资料,思绪很是凌乱,需要把思路整理哈,请那位大侠有个类似的经验告诉哈,小弟在这里不胜感激!

线程同步是指,两个或两个以上的线程访问同一资源时,需要线程同步你可以使用下面这个类;
Monitor.Enter(obj);
...
Monitor.Wait(obj);
中间的代码同时只允许一个线程访问,其他线程执行到Monitor.Enter(obj),就会自动挂起,带执行的线程释放排它锁后就允许线程队列的最后一个线程进入执行,同时获得排他锁。其实这和
lock(obj)
{
...
}
所起的效果一样。

多线程

public Form1()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false;
}
这样就可以调用多线程了

一般如果你几个线程并发执行的时候,
如果没有同时对某个资源进行访问时是不会出现死锁的,
但是,如果都需要访问主进程中的资源时,
最好把访问的代码放到lock{}里,
这样就不会出现同时访问而互相等待进而产生死锁