This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++11 status.
Section: 33.4.3.3 [thread.thread.constr] Status: C++11 Submitter: Pete Becker Opened: 2009-01-07 Last modified: 2016-01-28
Priority: Not Prioritized
View all other issues in [thread.thread.constr].
View all issues with C++11 status.
Discussion:
the error handling for the constructor for condition_variable distinguishes lack of memory from lack of other resources, but the error handling for the thread constructor does not. Is this difference intentional?
[ Beman has volunteered to provide proposed wording. ]
[ 2009-09-25 Beman provided proposed wording. ]
The proposed resolution assumes 962 has been accepted and its proposed resolution applied to the working paper.
[ 2009-10 Santa Cruz: ]
Move to Ready.
Proposed resolution:
Change Mutex requirements 33.6.4 [thread.mutex.requirements], paragraph 4, as indicated:
Error conditions:
not_enough_memory
— if there is not enough memory to construct the mutex object.resource_unavailable_try_again
— if any native handle type manipulated is not available.operation_not_permitted
— if the thread does not have the necessary permission to change the state of the mutex object.device_or_resource_busy
— if any native handle type manipulated is already locked.invalid_argument
— if any native handle type manipulated as part of mutex construction is incorrect.
Change Class condition_variable 33.7.4 [thread.condition.condvar], default constructor, as indicated:
condition_variable();
Effects: Constructs an object of type
condition_variable
.Throws:
std::system_error
when an exception is required (33.2.2 [thread.req.exception]).Error conditions:
not_enough_memory
— if a memory limitation prevents initialization.resource_unavailable_try_again
— if some non-memory resource limitation prevents initialization.device_or_resource_busy
— if attempting to initialize a previously-initialized but as of yet undestroyedcondition_variable
.