Semaphores work. But programmers still need to code carefully to ensure mutual exclusion and that synchronisation operate correctly.
The problem with semaphores is that they are too low level in nature: they are similar to doing mutual exclusion and synchronisation in assembly language using goto's! They have no structure. They are also damnably hard to prove correct and near to impossible to test!
What is needed are high-level language constructs that enforce the necessary discipline. The two main contenders for this job are:
In Multiprogramming system, there is the DEADLOCK. A process which indicates waiting for an event that will never occur.
Designed by: Harriet B. Nyakaana