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.

### 960. Various threading bugs #10

Section: 33.6.4 [thread.mutex.requirements] Status: C++11 Submitter: Pete Becker Opened: 2009-01-07 Last modified: 2016-01-28

Priority: Not Prioritized

View other active issues in [thread.mutex.requirements].

View all other issues in [thread.mutex.requirements].

View all issues with C++11 status.

Discussion:

33.6.4 [thread.mutex.requirements]: paragraph 4 is entitled "Error conditions", but according to 16.3.2.4 [structure.specifications], "Error conditions:" specifies "the error conditions for error codes reported by the function." It's not clear what this should mean when there is no function in sight.

[ Summit: ]

> Move to open.

[ Beman provided proposed wording. ]

[ 2009-10 Santa Cruz: ]

> Move to Ready. Fix the proposed wording with "functions of type Mutex" -> "functions of Mutex type"

Proposed resolution:

Change 33.6.4 [thread.mutex.requirements] Mutex requirements, paragraph 4 as indicated:

> -4- Error conditions: The error conditions for error codes, if any, reported by member functions of Mutex type shall be:

> - `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.