Created on 2013-09-27.00:00:00 last changed 36 months ago
Notes from the February, 2016 meeting:
SG1 concluded that wording similar to the following should be added:
For any action A such that the declaration is sequenced before A, initialization shall happen before A. The concurrent execution shall block for completion of the initialization.
[Adopted at the February/March, 2017 meeting as document P0250R3.]
Regarding initialization of a block-scope static variable, 8.8 [stmt.dcl] paragraph 4 says,
If control enters the declaration concurrently while the variable is being initialized, the concurrent execution shall wait for completion of the initialization.
This specification does not use the terminology of 6.9.2 [intro.multithread], so the meaning of “wait” is not clear. For example, will a concurrent thread that “waited” see (in the sense of happens-before) the result of the initialization (including side effects caused during the initialization)?
Perhaps the “synchronizes-with” terminology could be used here.
|2018-02-27 00:00:00||admin||set||messages: + msg6159|
|2018-02-27 00:00:00||admin||set||status: concurrency -> c++17|