summaryrefslogtreecommitdiff
path: root/manual
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2025-11-11 18:20:10 +0100
committerFlorian Weimer <fweimer@redhat.com>2025-11-11 18:20:10 +0100
commit2eff71d28946896d085fbd0836ed1394bb55d352 (patch)
tree1b444355b866d0884d3b6aa573a36e877009a2b2 /manual
parent71d9f47b5a7a22a0576aea699cfd1820a83fd41b (diff)
stdlib: Do not define once_flag, ONCE_FLAG_INIT for C++
The definition of once_flag conflicts with std::once_flag in if “using namespace std;” is active. Updates commit a7ddbf456d97ac8d1aa7afd735e196a1488bd874 ("Add once_flag, ONCE_FLAG_INIT and call_once to stdlib.h for C23"). Suggested-by: Jonathan Wakely <jwakely@redhat.com> Reviewed-by: Collin Funk <collin.funk1@gmail.com>
Diffstat (limited to 'manual')
-rw-r--r--manual/threads.texi17
1 files changed, 15 insertions, 2 deletions
diff --git a/manual/threads.texi b/manual/threads.texi
index 1e9be32d66..b9d12479ca 100644
--- a/manual/threads.texi
+++ b/manual/threads.texi
@@ -23,8 +23,15 @@ POSIX threads.
This section describes the @glibcadj{} ISO C threads implementation.
To have a deeper understanding of this API, it is strongly recommended
to read ISO/IEC 9899:2011, section 7.26, in which ISO C threads were
-originally specified. All types and function prototypes are declared
-in the header file @file{threads.h}.
+originally specified.
+
+All types and function prototypes are declared in the header file
+@file{threads.h}. When compiling for C, some functionality is also
+available in @file{stdlib.h}.
+
+It is recommended that GNU systems use the functionality in
+@file{pthread.h} instead of @file{thread.h}, as they are more portable
+between C and C++.
@menu
* ISO C Threads Return Values:: Symbolic constants that represent a
@@ -203,11 +210,17 @@ called once in the presence of multiple, potentially calling threads.
@deftp {Data Type} once_flag
@standards{C11, threads.h}
A complete object type capable of holding a flag used by @code{call_once}.
+
+As of C23, @code{once_flag} is also defined in @file{stdlib.h},
+but only for C, not for C++.
@end deftp
@defvr Macro ONCE_FLAG_INIT
@standards{C11, threads.h}
This value is used to initialize an object of type @code{once_flag}.
+
+As of C23, @code{ONCE_FLAG_INIT} is also defined in @file{stdlib.h},
+but only for C, not for C++.
@end defvr
@deftypefun void call_once (once_flag *@var{flag}, void (*@var{func}) (void))