Ticket #7089 (closed Bugs: fixed)
BOOST_THREAD_WAIT_BUG limits functionality without solving anything
|Reported by:||jason@…||Owned by:||viboes|
In upgrading from 1.45 to 1.50 I noticed the following, which I think first appeared in 1.47:
Ticket 6130 reported a bug that on linux a call to the following would return early:
Consequently, a code change was made to introduce BOOST_THREAD_WAIT_BUG which forces at least a 1 millisecond sleep.
I think Ticket 6130 should have been rejected since the reported behavior is an artifact of 'spurious wake-ups' on linux and is solved by using the following:
condition_variable::timed_wait(lock, time, predicate)
This technique is referenced in the boost documentation.
I would like to see BOOST_THREAD_WAIT_BUG removed in order to eliminate the minimum 1 millisecond wait time it introduced. BOOST_THREAD_WAIT_BUG only masks the issue of spurious wake-ups as it can still happen if a predicate is not used.
Potentially off-topic: It would be nice if condition_variable encapsulated the predicate functionality on linux unless there's a valid reason that eludes me. Encapsulation would have several benefits such as not confusing the uninitiated, and avoiding the need for wrapper classes.
- Owner changed from anthonyw to viboes
- Status changed from new to assigned
- Status changed from assigned to closed
- Resolution set to fixed