Knihovna podpory vláken
C++ zahrnuje vestavěnou podporu pro vlákna, vzájemné vyloučení, podmíněné proměnné a futury.
Obsah |
[editovat] Vlákna
Vlákne umožňují programům souběžný běh na více procesorových jader.
Definováno v hlavičkovém souboru <thread> | |
(C++11) | manages a separate thread (class) |
Funkce pro správu aktivního vlákna | |
Definováno v jmenném prostoru this_thread | |
(C++11) | suggests that the implementation reschedule execution of threads (function) |
(C++11) | vrací vláknové id současného vlákna (function) |
(C++11) | na zadanou dobu pozastaví provádění současného vlákna (function) |
(C++11) | pozastaví provádění současného vlákna až do zadaného okamžiku (function) |
[editovat] Vzájemné vyloučení
Algoritmy vzájemného vyloučení (anglicky mutual exclusion algorithms) zabraňují současnému přístupu vícero vláken ke stejným sdíleným zdrojům. Tím zabraňují vzniku datového souběhu a nabízí podporu pro synchronizaci vláken.
Definováno v hlavičkovém souboru <mutex> | |
(C++11) | provides basic mutual exclusion facility (class) |
(C++11) | provides mutual exclusion facility which implements locking with a timeout (class) |
(C++11) | provides mutual exclusion facility which can be locked recursively by the same thread (class) |
(C++11) | provides mutual exclusion facility which can be locked recursively by the same thread and implements locking with a timeout (class) |
Definováno v hlavičkovém souboru <shared_mutex> | |
Generic mutex management | |
Definováno v hlavičkovém souboru <mutex> | |
(C++11) | implements a strictly scope-based mutex ownership wrapper (class template) |
(C++11) | implements movable mutex ownership wrapper (class template) |
(C++14) | implements movable shared mutex ownership wrapper (class template) |
(C++11)(C++11)(C++11) | tag type used to specify locking strategy (class) |
(C++11)(C++11)(C++11) | tag constants used to specify locking strategy (constant) |
Generic locking algorithms | |
(C++11) | attempts to obtain ownership of mutexes via repeated calls to try_lock (šablona funkce) |
(C++11) | locks specified mutexes, blocks if any are unavailable (šablona funkce) |
Call once | |
(C++11) | helper object to ensure that call_once invokes the function only once (class) |
(C++11) | invokes a function only once even if called from multiple threads (šablona funkce) |
[editovat] Podmíněné proměnné
Podmíněná proměnná patří mezi synchronizační primitiva, která umožňují komunikace mezi různými vlákny. Umožňuje vláknům čekat (případně s lhůtou) na upozornění od jiného vlákna, že mohou pokračovat. Podmíněná proměnná je vždy spojená s konkrétním vzájemným vyloučením (mutexem).
Definováno v hlavičkovém souboru <condition_variable> | |
(C++11) | provides a condition variable associated with a std::unique_lock (class) |
(C++11) | provides a condition variable associated with any lock type (class) |
(C++11) | schedules a call to notify_all to be invoked when this thread is completely finished (function) |
(C++11) | lists the possible results of timed waits on condition variables (enum) |
[editovat]Futury
Standardní knihovna poskytuje nástroje, jak získat návratové hodnoty a chytat výjimky asynchronních úloh (tedy funkcí prováděných v oddělených vláknech). Tyto hodnoty jsou předávány v sdíleném stavu, do kterého může asynchronní úloha zapsat svou návratovou hodnotu nebo uložit výjimku, a který mohou zkoumat, na který mohou čekat a s kterým mohou i jinak pracovat jiná vlákna, která mají instanci std::future nebo std::shared_future, která k sdílenému stavu odkazuje.
Definováno v hlavičkovém souboru <future> | |
(C++11) | stores a value for asynchronous retrieval (class template) |
(C++11) | packages a function to store its return value for asynchronous retrieval (class template) |
(C++11) | waits for a value that is set asynchronously (class template) |
(C++11) | waits for a value (possibly referenced by other futures) that is set asynchronously (class template) |
(C++11) | runs a function asynchronously (potentially in a new thread) and returns a std::future that will hold the result (šablona funkce) |
(C++11) | specifies the launch policy for std::async (enum) |
(C++11) | specifies the results of timed waits performed on std::future and std::shared_future (enum) |
Future errors | |
(C++11) | reports an error related to futures or promises (class) |
(C++11) | identifies the future error category (function) |
(C++11) | identifies the future error codes (enum) |
[editovat]Vizte též
C documentation for Knihovna podpory vláken |