views:

193

answers:

2

Can every imaginable synchronization problem be solved with judicious use of semaphores? What about weak semaphores?

+2  A: 

No. Just for example, it's impossible for a system that uses only semaphores for synchronization to provide wait-free guarantees, or even progress guarantees, in the face of third-party code (e.g. a plugin). A perverse or poorly-written section of code can deny access to a semaphore-guarded section of code to everyone forever.

David Seiler
I don't think this answers the right question. The problem is whether semaphores are sufficient to implement all other synchronisation primitives. I don't think any implementation could withstand injection of incorrect code at arbitrary points, whether it use locks or semaphores or what have you.
Paul Du Bois
A: 

Agerwala argues that appropiately extended semaphores are complete. This doesn't answer all my questions, but is on right track. David Seiler has a point too.

sdcvvc