Yak*_*kov 3 multithreading mutex deadlock
这是一个面试问题.一般情况下,当thread1锁定mutex1时会生成2个线程之间的死锁,并且在它尝试锁定mutex2之前的一刻,线程2锁定mutex2.在该脚步2想要锁定mutex1之后.所以它们永远等待彼此.
问题是"你能用一个互斥锁和任意数量的线程给出死锁情景吗?"
死锁需要4件事:
互斥 - 指拥有可由单个线程拥有的资源(锁)的想法.
没有先发制人 - 无法强制获取锁定
循环等待 - 指的是一个线程正在等待另一个,即等待自己(或链)
保持和等待 - 一个线程能够锁定一个并等待另一个
在一次采访中,通常更重要的是向他们展示你的思维过程,如果你提出这些规则,他们可能会为你做更多的事情,而不是试图给出"技术上正确"的技巧答案.
但是你可以这样做:
主线程锁定资源,然后将一些任务发送到线程池.这些任务等待资源.主线程等待任务.