1515. packaged_task::make_ready_at_thread_exit has no synchronization requirements

Section: 33.6.10.1 [futures.task.members] Status: Resolved Submitter: INCITS Opened: 2010-08-25 Last modified: 2016-02-10

Priority: Not Prioritized

View all other issues in [futures.task.members].

View all issues with Resolved status.

Discussion:

Addresses US-208

packaged_task::make_ready_at_thread_exit has no synchronization requirements.

[ Resolution proposed by ballot comment: ]

Figure out what the synchronization requirements should be and write them.

[2011-02-09 Anthony provides a proposed resolution]

[2011-02-19 Additional edits by Hans, shown in the proposed resolution section]

[2011-02-22 Reflector discussion]

Moved to Tentatively Ready after 5 votes.

Proposed Resolution

Add a new paragraph following 33.6.10.1 [futures.task.members] p. 19:

void make_ready_at_thread_exit(ArgTypes... args);

19 - ...

?? - Synchronization: Following a successful call to make_ready_at_thread_exit, the destruction of all objects with thread storage duration associated with the current thread happens before the associated asynchronous state is made ready. The marking of the associated asynchronous state as ready synchronizes with (6.8.2 [intro.multithread]) the successful return from any function that detects that the state is set to ready.

Proposed resolution:

Resolved 2011-03 Madrid meeting by paper N3278