Nicolas Fleury said: > William E. Kempf wrote: >> Stefan Seefeld said: >>>As boost doesn't, there must clearly be other reasons for them not to >>> do that. >> >> There is, but the explanations are long and quite complex. That's why >> the FAQ points you at a seminal paper on the subject, rather than >> attempting > > Correct me if I'm wrong, but isn't the FAQ pointing to a seminal paper > only when justiying the absence of events, not semaphores?
Hmm... my mistake. The reference was missed in the FAQ. I'll have to correct this, but it will take me a bit, as I'm busy with other things. > What is the paper you have in mind to justify the absence of semaphores? > > I would like very much to understand and be convinced. It would also > be nice if the #10 of the FAQ would point to this paper. > >> to explain it. Like I've said in numerous arguments about the Event >> concept, the problem with the concept isn't that it's broken or >> unusable, only that it's difficult to actually use correctly. Most >> users think their code is correct, when in fact they have race >> conditions waiting to bite them. When Mutexes and Condition variables >> provide everything that Semaphores and Events do, but in a way that's >> easier to use correctly, the choice to not include Event's or >> Semaphore's is reasonable. > > I highly respect and esteem people working on boost, and I strongly > expect the removal of semaphore was reasonable. It's just that the > current explanation I see is not convincing for me and probably others: > "Semaphore was removed as too error prone. The same effect can be > achieved with greater safety by the combination of a mutex and a > condition variable." I guess the answer is in the papers referred in > the events versus conditions question; it's just that people coming from > Posix environments would not care about the event topic and would feel > the semaphore absence justification is incomplete. As Alexander points out, some of the justification is similar to the justification of events. After a semaphore is signaled, it's the burden of the user to ensure proper synchronization of any shared resources. In most cases this is difficult to do correctly at best. -- William E. Kempf _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost