tmp/tmpg3o01d1_/{from.md → to.md}
RENAMED
|
@@ -17,22 +17,24 @@ and `traits` behave as described if `traits::pos_type` and
|
|
| 17 |
as noted explicitly below, their behavior when `traits::pos_type` and
|
| 18 |
`traits::off_type` are other types is *implementation-defined*.
|
| 19 |
|
| 20 |
In the classes of Clause [[input.output]], a template parameter with
|
| 21 |
name `charT` represents a member of the set of types containing `char`,
|
| 22 |
-
`wchar_t`, and any other implementation-defined character types that
|
| 23 |
satisfy the requirements for a character on which any of the iostream
|
| 24 |
components can be instantiated.
|
| 25 |
|
| 26 |
### Thread safety <a id="iostreams.threadsafety">[[iostreams.threadsafety]]</a>
|
| 27 |
|
| 28 |
Concurrent access to a stream object ([[string.streams]],
|
| 29 |
[[file.streams]]), stream buffer object ([[stream.buffers]]), or C
|
| 30 |
Library stream ([[c.files]]) by multiple threads may result in a data
|
| 31 |
race ([[intro.multithread]]) unless otherwise specified (
|
| 32 |
-
[[iostream.objects]]).
|
| 33 |
-
|
|
|
|
|
|
|
| 34 |
|
| 35 |
If one thread makes a library call *a* that writes a value to a stream
|
| 36 |
and, as a result, another thread reads this value from the stream
|
| 37 |
through a library call *b* such that this does not result in a data
|
| 38 |
race, then *a*’s write synchronizes with *b*’s read.
|
|
|
|
| 17 |
as noted explicitly below, their behavior when `traits::pos_type` and
|
| 18 |
`traits::off_type` are other types is *implementation-defined*.
|
| 19 |
|
| 20 |
In the classes of Clause [[input.output]], a template parameter with
|
| 21 |
name `charT` represents a member of the set of types containing `char`,
|
| 22 |
+
`wchar_t`, and any other *implementation-defined* character types that
|
| 23 |
satisfy the requirements for a character on which any of the iostream
|
| 24 |
components can be instantiated.
|
| 25 |
|
| 26 |
### Thread safety <a id="iostreams.threadsafety">[[iostreams.threadsafety]]</a>
|
| 27 |
|
| 28 |
Concurrent access to a stream object ([[string.streams]],
|
| 29 |
[[file.streams]]), stream buffer object ([[stream.buffers]]), or C
|
| 30 |
Library stream ([[c.files]]) by multiple threads may result in a data
|
| 31 |
race ([[intro.multithread]]) unless otherwise specified (
|
| 32 |
+
[[iostream.objects]]).
|
| 33 |
+
|
| 34 |
+
[*Note 1*: Data races result in undefined behavior (
|
| 35 |
+
[[intro.multithread]]). — *end note*]
|
| 36 |
|
| 37 |
If one thread makes a library call *a* that writes a value to a stream
|
| 38 |
and, as a result, another thread reads this value from the stream
|
| 39 |
through a library call *b* such that this does not result in a data
|
| 40 |
race, then *a*’s write synchronizes with *b*’s read.
|