This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 113d. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.

2024-03-20


1176. Definition of release sequence

Section: 6.9.2  [intro.multithread]     Status: C++11     Submitter: CA, GB     Date: 2010-08-10

[Voted into the WP at the November, 2010 meeting as part of paper N3196.]

N3092 comment CA 12
N3092 comment GB 9

The current wording of the standard suggests that release sequences are maximal with respect to sequence inclusion, i.e. that if there are two release operations in the modification order,

mod       mod
rel1----->rel2----->w

then [rel1;rel2;w] is the only release sequence, as the other candidate [rel2;w] is included in it. This interpretation precludes synchronizing with releases which have other releases sequenced-before them. We believe that the intention is actually to define the maximal release sequence from a particular release operation, which would admit both [rel1;rel2;w] and [rel2;w].

Proposed resolution (August, 2010):

Change 6.9.2 [intro.multithread] paragraph 6 as follows:

A release sequence from a release operation A on an atomic object M is a maximal contiguous sub-sequence of side effects in the modification order of M, where the first operation is a release A, and every subsequent operation