I think the semaphores are a good idea. When you work with low latency
concurrent data structures, the mutex and condition variables are very
slow. Even the spinlocks done with atomic variables are slow.
In my library [countertree + suballocator] the suballocator spends 0.74
seconds in allocate 50000000 elements, the same code with a spinlock spends
3.5 seconds.
I am agree with the critics to the standard, but my main critics to the
standard is that many times they forget the "common people" language. I see
when explain to my students. I must translate from the "expert" language to
the "common people" language, and then they understand the use and
functionality of the things. If they have problems for to understand, they
will have problems when use it. I think this is a main part of the problems
using the semaphores.
I know it is not easy ( I know by experience), but spend time in this ,
save time of a lot of people.
2013/9/18 Tim Blechmann
many use cases is not necessary. and locks are not free, as they involve memory barriers and atomic operations. and how many platforms implement PI mutexes?
Don't semaphores involve memory barriers and/or atomics too? POSIX semaphores do.
(N.B. I'm not disputing that semaphores have less overhead than CVs.)
they do, but much less: according to some micro-benchmarks with much contention, dispatch semaphores on osx are about 80 times faster than CVs, while posix semaphores on linux are about 30 times faster.
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost