Deadlock Avoidance via Scheduling
Let's look at another solution to the problem of deadlock by avoiding deadlocks in the first place.
Instead of deadlock prevention, in some scenarios deadlock avoidance is preferable. Avoidance requires some global knowledge of which locks various threads might grab during their execution, and subsequently, schedules said threads in a way as to guarantee no deadlock can occur.
For example, assume we have two processors and four threads that must be scheduled upon them. Assume further we know that Thread 1 (T1) grabs locks L1
and L2
(in some order, at some point during its execution), T2 grabs L1
and L2
as well, T3 grabs just L2
, and T4 grabs no locks at all. We can show these lock acquisition demands of the threads in tabular form:
Get hands-on with 1200+ tech skills courses.