
Le 03/02/13 17:21, Oliver Kowalke a écrit :
both uses are protected with boost::unique_lock<boost::mutex> &lock. Am I missing something? Best, Vicente Oh - I see you have already answered.
I'm not shure if reordering is still possible. Var done is not volatile and because the implementation is in the header it might be inlined. I don't know if the lock creates something like a memory barrier (happend before etc.). Well, a lock is a lock. Its purpose is to protect from race conditions, so I don't see where the problem could come from.
I'm using your future implementation - I replaced mutex and condition with my own implementation (using atomics). Unit-test which use future do sometimes not return. If I use condition::wait() instead of future<>::wait() the code works perfect. Of curse it might be possible that my impl is buggy (but I use simple spinlock). What I want to say - I'm uncertain.
I suspect that I could not help you there. Best, Vicente