Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      Concurrency support library

      From cppreference.com
      <c
       
       
      Concurrency support library
       

      C includes built-in support for threads, atomic operations, mutual exclusion, condition variables, and thread-specific storages.

      These features are optionally provided:

      • if the macro constant__STDC_NO_THREADS__ is defined by the compiler, the header<threads.h> and all of the names provided in it are not provided;
      • if the macro constant__STDC_NO_ATOMICS__ is defined by the compiler, the header<stdatomic.h> and all of the names provided in it are not provided.

      See also_Atomic type specifier and qualifier.

      Contents

      [edit]Threads

      Defined in header<threads.h>
      thrd_t implementation-defined complete object type identifying a thread[edit]
      creates a thread
      (function)[edit]
      checks if two identifiers refer to the same thread
      (function)[edit]
      obtains the current thread identifier
      (function)[edit]
      suspends execution of the calling thread for the given period of time
      (function)[edit]
      yields the current time slice
      (function)[edit]
      terminates the calling thread
      (function)[edit]
      detaches a thread
      (function)[edit]
      blocks until a thread terminates
      (function)[edit]
      indicates a thread error status
      (constant)[edit]
      thrd_start_t
      (C11)
      a typedef of the function pointer typeint(*)(void*), used bythrd_create
      (typedef)[edit]

      [edit]Atomic operations

      Defined in header<stdatomic.h>
      Operations on atomic types
      indicates that the given atomic type is lock-free
      (macro constant)[edit]
      indicates whether the atomic object is lock-free
      (function)[edit]
      stores a value in an atomic object
      (function)[edit]
      reads a value from an atomic object
      (function)[edit]
      swaps a value with the value of an atomic object
      (function)[edit]
      swaps a value with an atomic object if the old value is what is expected, otherwise reads the old value
      (function)[edit]
      atomic addition
      (function)[edit]
      atomic subtraction
      (function)[edit]
      atomic bitwise OR
      (function)[edit]
      atomic bitwise exclusive OR
      (function)[edit]
      atomic bitwise AND
      (function)[edit]
      Flag type and operations
      lock-free atomic boolean flag
      (struct)[edit]
      sets an atomic_flag to true and returns the old value
      (function)[edit]
      sets an atomic_flag to false
      (function)[edit]
      Initialization
      initializes an existing atomic object
      (function)[edit]
      (C11)(deprecated in C17)(removed in C23)
      initializes a new atomic object
      (function macro)[edit]
      initializes a newatomic_flag
      (macro constant)[edit]
      Memory synchronization ordering
      defines memory ordering constraints
      (enum)[edit]
      breaks a dependency chain formemory_order_consume
      (function macro)[edit]
      generic memory order-dependent fence synchronization primitive
      (function)[edit]
      fence between a thread and a signal handler executed in the same thread
      (function)[edit]
      Convenience type aliases
      Typedef name Full type name
      atomic_bool(C11)_Atomic _Bool(until C23)_Atomic bool(since C23)
      atomic_char(C11)_Atomicchar
      atomic_schar(C11)_Atomicsignedchar
      atomic_uchar(C11)_Atomicunsignedchar
      atomic_short(C11)_Atomicshort
      atomic_ushort(C11)_Atomicunsignedshort
      atomic_int(C11)_Atomicint
      atomic_uint(C11)_Atomicunsignedint
      atomic_long(C11)_Atomiclong
      atomic_ulong(C11)_Atomicunsignedlong
      atomic_llong(C11)_Atomiclonglong
      atomic_ullong(C11)_Atomicunsignedlonglong
      atomic_char8_t(C23)_Atomic char8_t
      atomic_char16_t(C11)_Atomic char16_t
      atomic_char32_t(C11)_Atomic char32_t
      atomic_wchar_t(C11)_Atomicwchar_t
      atomic_int_least8_t(C11)_Atomicint_least8_t
      atomic_uint_least8_t(C11)_Atomicuint_least8_t
      atomic_int_least16_t(C11)_Atomicint_least16_t
      atomic_uint_least16_t(C11)_Atomicuint_least16_t
      atomic_int_least32_t(C11)_Atomicint_least32_t
      atomic_uint_least32_t(C11)_Atomicuint_least32_t
      atomic_int_least64_t(C11)_Atomicint_least64_t
      atomic_uint_least64_t(C11)_Atomicuint_least64_t
      atomic_int_fast8_t(C11)_Atomicint_fast8_t
      atomic_uint_fast8_t(C11)_Atomicuint_fast8_t
      atomic_int_fast16_t(C11)_Atomicint_fast16_t
      atomic_uint_fast16_t(C11)_Atomicuint_fast16_t
      atomic_int_fast32_t(C11)_Atomicint_fast32_t
      atomic_uint_fast32_t(C11)_Atomicuint_fast32_t
      atomic_int_fast64_t(C11)_Atomicint_fast64_t
      atomic_uint_fast64_t(C11)_Atomicuint_fast64_t
      atomic_intptr_t(C11)_Atomicintptr_t
      atomic_uintptr_t(C11)_Atomicuintptr_t
      atomic_size_t(C11)_Atomicsize_t
      atomic_ptrdiff_t(C11)_Atomicptrdiff_t
      atomic_intmax_t(C11)_Atomicintmax_t
      atomic_uintmax_t(C11)_Atomicuintmax_t

      [edit]Mutual exclusion

      Defined in header<threads.h>
      mtx_t mutex identifier[edit]
      creates a mutex
      (function)[edit]
      blocks until locks a mutex
      (function)[edit]
      blocks until locks a mutex or times out
      (function)[edit]
      locks a mutex or returns without blocking if already locked
      (function)[edit]
      unlocks a mutex
      (function)[edit]
      destroys a mutex
      (function)[edit]
      defines the type of a mutex
      (enum)[edit]
      Call once
      calls a function exactly once
      (function)[edit]

      [edit]Condition variables

      Defined in header<threads.h>
      cnd_t condition variable identifier
      creates a condition variable
      (function)[edit]
      unblocks one thread blocked on a condition variable
      (function)[edit]
      unblocks all threads blocked on a condition variable
      (function)[edit]
      blocks on a condition variable
      (function)[edit]
      blocks on a condition variable, with a timeout
      (function)[edit]
      destroys a condition variable
      (function)[edit]

      [edit]Thread-local storage

      Defined in header<threads.h>
      (C11)(removed in C23)
      convenience macro for storage-class specifier_Thread_local
      (keyword macro)[edit]
      tss_t thread-specific storage pointer[edit]
      maximum number of times destructors are called
      (macro constant)[edit]
      tss_dtor_t
      (C11)
      function pointer typevoid(*)(void*), used for TSS destructor
      (typedef)[edit]
      creates thread-specific storage pointer with a given destructor
      (function)[edit]
      (C11)
      reads from thread-specific storage
      (function)[edit]
      (C11)
      write to thread-specific storage
      (function)[edit]
      releases the resources held by a given thread-specific pointer
      (function)[edit]

      [edit]Reserved identifiers

      In future revisions of the C standard:

      • function names, type names, and enumeration constants that begin with eithercnd_,mtx_,thrd_, ortss_, and a lowercase letter may be added to the declarations in the<threads.h> header;
      • macros that begin withATOMIC_ and an uppercase letter may be added to the macros defined in the<stdatomic.h> header;
      • typedef names that begin with eitheratomic_ ormemory_, and a lowercase letter may be added to the declarations in the<stdatomic.h> header;
      • enumeration constants that begin withmemory_order_ and a lowercase letter may be added to the definition of thememory_order type in the<stdatomic.h> header;
      • function names that begin withatomic_ and a lowercase letter may be added to the declarations in the<stdatomic.h> header.

      Identifiers reserved for functions names are alwayspotentially(since C23) reserved for use as identifiers with external linkage, while other identifiers list here arepotentially(since C23) reserved when<stdatomic.h> is included.

      Declaring, defining, or#undefing such an identifier results in undefined behavior if it is provided by the standard or implementation(since C23). Portable programs should not use those identifiers.

      [edit]References

      • C23 standard (ISO/IEC 9899:2024):
      • 7.17 Atomics <stdatomic.h> (p: TBD)
      • 7.26 Threads <threads.h> (p: TBD)
      • 7.31.8 Atomics <stdatomic.h> (p: TBD)
      • 7.31.15 Threads <threads.h> (p: TBD)
      • C17 standard (ISO/IEC 9899:2018):
      • 7.17 Atomics <stdatomic.h> (p: 200-209)
      • 7.26 Threads <threads.h> (p: 274-283)
      • 7.31.8 Atomics <stdatomic.h> (p: 332)
      • 7.31.15 Threads <threads.h> (p: 333)
      • C11 standard (ISO/IEC 9899:2011):
      • 7.17 Atomics <stdatomic.h> (p: 273-286)
      • 7.26 Threads <threads.h> (p: 376-387)
      • 7.31.8 Atomics <stdatomic.h> (p: 455-456)
      • 7.31.15 Threads <threads.h> (p: 456)

      [edit]See also

      C++ documentation forConcurrency support library

      [edit]External links

      GNU GCC Libc Manual: ISO C Mutexes
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=c/thread&oldid=180203"

      [8]ページ先頭

      ©2009-2025 Movatter.jp