首页 新闻 赞助 找找看

一个进程的问题

0
悬赏园豆:30 [已解决问题] 解决于 2008-11-09 16:08

就是如果一个资源正在被一个进程使用,那么另一个进程就要等待,直到这个进程结束后,下一个进程才能进来使用资源,否则两个进程都不能用资源,会造成两个都等待,进入死锁状态。谁用C#写个例子给我,WinForm的.谢谢!!!!

零度吹风的主页 零度吹风 | 初学一级 | 园豆:0
提问于:2008-11-07 00:23
< >
分享
最佳答案
0

你的命题好像就有一些问题,死锁只有在两个进程相互等待对方正在使用的资源的时候才会发生,如果只有一个资源,无法构成死锁。

比如两个互斥对象 Mutex A; Mutex B;

两个进程 1, 2 分别有如下调用

进程1

A.WaitOne();

B.WaitOne();

//Code for process 1

B.ReleaseMutex();

A.ReleaseMutex();

进程2

B.WaitOne();

A.WaitOne();

//Code for process 2

A.ReleaseMutex();

B.ReleaseMutex();

 

现在我们假设 进程1 已经执行了 A.WaitOne(); 这时操作系统的进程时间片用完了,进程1被挂起,

进程2开始执行,由于B还没有被进程1使用,进程2 成功执行了 B.WaitOne(); 接下来执行 A.WiatOne() 时由于进程1已经占有了A,进程2挂起等待进程1释放A。这时进程1重新被调度,接下来执行 B.WaitOne();而B 又被进程2使用着,A需要等待进程2释放B,于是相互都等待对方释放对象,这时才产生死锁的现象。死锁产生后,只要其中一个进程被强制结束,死锁就会解除。具体原因我就不细说了。

 

 

 

 

 

 

 

 

 

 

 

 

 

eaglet | 专家六级 |园豆:17139 | 2008-11-07 06:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册