From Jason Turner

[res.on.data.races]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpnjtvw51h/{from.md → to.md} +10 -8
tmp/tmpnjtvw51h/{from.md → to.md} RENAMED
@@ -14,32 +14,34 @@ via the function’s arguments, including `this`.
14
  A C++standard library function shall not directly or indirectly modify
15
  objects ([[intro.multithread]]) accessible by threads other than the
16
  current thread unless the objects are accessed directly or indirectly
17
  via the function’s non-const arguments, including `this`.
18
 
19
- This means, for example, that implementations can’t use a static object
20
- for internal purposes without synchronization because it could cause a
21
- data race even in programs that do not explicitly share objects between
22
- threads.
23
 
24
  A C++standard library function shall not access objects indirectly
25
  accessible via its arguments or via elements of its container arguments
26
  except by invoking functions required by its specification on those
27
  container elements.
28
 
29
  Operations on iterators obtained by calling a standard library container
30
  or string member function may access the underlying container, but shall
31
- not modify it. In particular, container operations that invalidate
 
 
32
  iterators conflict with operations on iterators associated with that
33
- container.
34
 
35
  Implementations may share their own internal objects between threads if
36
  the objects are not visible to users and are protected against data
37
  races.
38
 
39
  Unless otherwise specified, C++standard library functions shall perform
40
  all operations solely within the current thread if those operations have
41
  effects that are visible ([[intro.multithread]]) to users.
42
 
43
- This allows implementations to parallelize operations if there are no
44
- visible side effects.
45
 
 
14
  A C++standard library function shall not directly or indirectly modify
15
  objects ([[intro.multithread]]) accessible by threads other than the
16
  current thread unless the objects are accessed directly or indirectly
17
  via the function’s non-const arguments, including `this`.
18
 
19
+ [*Note 1*: This means, for example, that implementations can’t use a
20
+ static object for internal purposes without synchronization because it
21
+ could cause a data race even in programs that do not explicitly share
22
+ objects between threads. — *end note*]
23
 
24
  A C++standard library function shall not access objects indirectly
25
  accessible via its arguments or via elements of its container arguments
26
  except by invoking functions required by its specification on those
27
  container elements.
28
 
29
  Operations on iterators obtained by calling a standard library container
30
  or string member function may access the underlying container, but shall
31
+ not modify it.
32
+
33
+ [*Note 2*: In particular, container operations that invalidate
34
  iterators conflict with operations on iterators associated with that
35
+ container. — *end note*]
36
 
37
  Implementations may share their own internal objects between threads if
38
  the objects are not visible to users and are protected against data
39
  races.
40
 
41
  Unless otherwise specified, C++standard library functions shall perform
42
  all operations solely within the current thread if those operations have
43
  effects that are visible ([[intro.multithread]]) to users.
44
 
45
+ [*Note 3*: This allows implementations to parallelize operations if
46
+ there are no visible side effects. — *end note*]
47