Subj : Re: Deadlock theorem To : comp.programming.threads From : Peter Koch Larsen Date : Tue May 03 2005 12:53 am "Uenal Mutlu" <520001085531-0001@t-online.de> skrev i en meddelelse news:d55bm1$92r$03$1@news.t-online.com... > "Peter Koch Larsen" wrote >> "Uenal Mutlu" skrev >> > "Joe Seigh" wrote >> >> >> >> Releasing a lock doesn't block, so there's no requirement on any >> >> release order, though you can't reacquire the lock if you hold locks >> >> further down in the hierarchy without releasing those locks first. >> > >> > Do you mean that the following case is not possible with hierarchical >> > locking? >> > o1.Lock(); >> > o2.Lock(); >> > o3.Lock(); >> > o1.Unlock() >> > o2.Unlock(); >> > o1.Lock(); >> > >> > With my method this is possible. And this also shows that the >> > methods indeed aren't the same. >> > >> > >> What do you mean? Let us test your solution: >> Thread 1: >> o1.Lock(); >> o2.Lock(); >> o3.Lock(); >> o1.Unlock() >> o2.Unlock(); >> >> context switch >> >> Thread 2: >> o1.Lock(); >> o2.Lock(); >> o3.Lock(); => waits for unlock by thread 1 >> >> Thread 1 resumes: >> o1.Lock(); => waits for unlock by thread 2 >> >> A nice and simple deadlock. > > Of course you are right. I'm aware of the deadlock when there > is more than 1 thread. The purpose of the code was just to > show one of the differences between the definition of hierarchical > locking and my method. > > Quoting from your original post: Theorem: a) "There will be no deadlock if the objects are locked in the same order." b) "Unlocking can be done in any order." Some explanation: "Order" in this context means sequence. The theorem applies equally well to both sequential and parallel processing (ie. threads, tasks, processes, coroutines etc.), and regardless of the number of objects one wishes to lock in any of the parallel running units (aka threads). That is: the objects designated for locking, and the number of them, can be different in each thread; only the locking sequence (order) must be the same in all threads. (If this theorem is new then I would like to give it the name "Mutlu theorem" :-) [end quote] I must admit you've lost me. I do not understand .