Multithreading 关于线程和死锁的一些问题
若父进程正在使用资源,而子进程也将获得相同的资源,那个么父进程和子进程是否会处于死锁状态?如果父线程包含两个线程呢?孩子也会得到2个线程吗?fork如何实现线程安全?中的一句话描述是 死锁是指两个或多个相互竞争的操作都在等待另一个操作完成,因此两个操作都没有完成 最简单的情况是两个线程和两个资源 线程A:Multithreading 关于线程和死锁的一些问题,multithreading,Multithreading,若父进程正在使用资源,而子进程也将获得相同的资源,那个么父进程和子进程是否会处于死锁状态?如果父线程包含两个线程呢?孩子也会得到2个线程吗?fork如何实现线程安全?中的一句话描述是 死锁是指两个或多个相互竞争的操作都在等待另一个操作完成,因此两个操作都没有完成 最简单的情况是两个线程和两个资源 线程A: acquireResource(r1) acquireResource(r2) // Do stuff releaseResource(r1) releaseResourc
acquireResource(r1)
acquireResource(r2)
// Do stuff
releaseResource(r1)
releaseResource(r2)
线程B:
acquireResrouce(r2)
acquireResource(r1)
// Do stuff
releaseResource(r1)
releaseResource(r2)
对于此代码,如果发生以下事件序列,则会发生死锁
为了避免这种简单的情况,可以确保在整个代码中以相同的顺序获取资源。例如,如果线程B首先获取r1,则不会出现死锁。实现僵局还有很多其他的方法,尽管这些方法很难避免。真的很难说。为什么不试着问一个非常具体的问题,一个资源,一个共享场景?一些资源可以共享;有些人不能。有些可以通过某些方式共享,但不能通过其他方式共享。例如,内存通常可以读取,但不能在没有同步的情况下同时写入,而CPU则由操作系统为您进行仲裁。此外,如果您认为您收到了问题的有价值的答案,您可能希望接受一个优秀的答案,以奖励那些为您提供帮助的人。