ÐиблиоÑека поддеÑжки поÑоков
C++ вклÑÑÐ°ÐµÑ Ð²ÑÑÑоеннÑÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÑ Ð¿Ð¾Ñоков, взаимного иÑклÑÑениÑ, ÑÑловнÑÑ Ð¿ÐµÑеменнÑÑ Ð¸ ÑазделÑемÑÑ ÑоÑÑоÑний.
[пÑавиÑÑ] ÐоÑоки
ÐоÑоки позволÑÑÑ Ð¿ÑогÑаммам вÑполнÑÑÑÑÑ Ð½Ð° неÑколÑÐºÐ¸Ñ ÑдÑÐ°Ñ Ð¿ÑоÑеÑÑоÑа.
ÐпÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð² заголовоÑном Ñайле
<thread> | |
(C++11) |
ÑпÑавлÑÐµÑ Ð¾ÑделÑнÑм поÑоком (клаÑÑ) |
(C++20) |
std::thread Ñ Ð¿Ð¾Ð´Ð´ÐµÑжкой авÑомаÑиÑеÑкого пÑиÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¸ завеÑÑÐµÐ½Ð¸Ñ (клаÑÑ) |
ФÑнкÑии, ÑпÑавлÑÑÑие ÑекÑÑим поÑоком | |
ÐпÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð² пÑоÑÑÑанÑÑве имÑн
this_thread | |
(C++11) |
пÑедлагаеÑ, ÑÑÐ¾Ð±Ñ ÑеализаÑÐ¸Ñ Ð¿ÐµÑепланиÑовала вÑполнение поÑоков (ÑÑнкÑиÑ) |
(C++11) |
возвÑаÑÐ°ÐµÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¾Ñ ÑекÑÑего поÑока (ÑÑнкÑиÑ) |
(C++11) |
оÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð²Ñполнение ÑекÑÑего поÑока на Ñказанное вÑÐµÐ¼Ñ (ÑÑнкÑиÑ) |
(C++11) |
оÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð²Ñполнение ÑекÑÑего поÑока до Ñказанного моменÑа вÑемени (ÑÑнкÑиÑ) |
ÐавеÑÑение поÑокаТипÑ
|
(наÑÐ¸Ð½Ð°Ñ Ñ C++20) |
[пÑавиÑÑ] ÐоÑÑÑп к ÑазмеÑÑ ÐºÐµÑа
ÐпÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð² заголовоÑном Ñайле
<new> | |
минималÑное ÑмеÑение, ÑÑÐ¾Ð±Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ð»Ð¾Ð¶Ð½Ð¾Ð³Ð¾ ÑовмеÑÑного иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð°ÐºÑималÑное ÑмеÑение, ÑÑÐ¾Ð±Ñ ÑпоÑобÑÑвоваÑÑ Ð¸ÑÑÐ¸Ð½Ð½Ð¾Ð¼Ñ ÑовмеÑÑÐ½Ð¾Ð¼Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ (конÑÑанÑа) |
[пÑавиÑÑ] Ðзаимное иÑклÑÑение
ÐлгоÑиÑÐ¼Ñ Ð²Ð·Ð°Ð¸Ð¼Ð½Ð¾Ð³Ð¾ иÑклÑÑÐµÐ½Ð¸Ñ Ð¿ÑедоÑвÑаÑаÑÑ Ð¾Ð´Ð½Ð¾Ð²ÑеменнÑй доÑÑÑп неÑколÑÐºÐ¸Ñ Ð¿Ð¾Ñоков к обÑим ÑеÑÑÑÑам. ÐÑо пÑедоÑвÑаÑÐ°ÐµÑ Ð³Ð¾Ð½ÐºÐ¸ даннÑÑ Ð¸ обеÑпеÑÐ¸Ð²Ð°ÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÑ ÑÐ¸Ð½Ñ ÑонизаÑии Ð¼ÐµÐ¶Ð´Ñ Ð¿Ð¾Ñоками.
ÐпÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð² заголовоÑном Ñайле
<mutex> | |
(C++11) |
обеÑпеÑÐ¸Ð²Ð°ÐµÑ Ð±Ð°Ð·Ð¾Ð²ÑÑ ÑÑнкÑионалÑноÑÑÑ Ð²Ð·Ð°Ð¸Ð¼Ð½Ð¾Ð³Ð¾ иÑклÑÑÐµÐ½Ð¸Ñ (клаÑÑ) |
(C++11) |
пÑедоÑÑавлÑÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð²Ð·Ð°Ð¸Ð¼Ð½Ð¾Ð³Ð¾ иÑклÑÑениÑ, коÑоÑÐ°Ñ ÑеализÑÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ñ Ñайм-аÑÑом (клаÑÑ) |
(C++11) |
пÑедоÑÑавлÑÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð²Ð·Ð°Ð¸Ð¼Ð½Ð¾Ð³Ð¾ иÑклÑÑениÑ, коÑоÑое Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑекÑÑÑивно заблокиÑовано одним и Ñем же поÑоком (клаÑÑ) |
(C++11) |
пÑедоÑÑавлÑÐµÑ ÑÑедÑÑво взаимного иÑклÑÑениÑ, коÑоÑое Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñовано ÑекÑÑÑивно одним и Ñем же поÑоком, и ÑеализÑÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ñ Ñайм-аÑÑом (клаÑÑ) |
ÐпÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð² заголовоÑном Ñайле
<shared_mutex> | |
(C++17) |
пÑедоÑÑавлÑÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¾Ð±Ñего взаимного иÑклÑÑÐµÐ½Ð¸Ñ (клаÑÑ) |
(C++14) |
пÑедоÑÑавлÑÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¾Ð±Ñего взаимного иÑклÑÑÐµÐ½Ð¸Ñ Ð¸ ÑеализÑÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ñ Ñайм-аÑÑом (клаÑÑ) |
ÐбÑее ÑпÑавление мÑÑÑекÑом | |
ÐпÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð² заголовоÑном Ñайле
<mutex> | |
(C++11) |
ÑеализÑÐµÑ Ð¾Ð±ÑÑÑÐºÑ Ð²Ð»Ð°Ð´ÐµÐ½Ð¸Ñ Ð¼ÑÑÑекÑом ÑÑÑого в облаÑÑи видимоÑÑи (Ñаблон клаÑÑа) |
(C++17) |
обÑÑÑка RAII Ð´Ð»Ñ Ð¿ÑедоÑвÑаÑÐµÐ½Ð¸Ñ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð±Ð»Ð¾ÐºÐ¸Ñовок Ð´Ð»Ñ Ð½ÐµÑколÑкиÑ
мÑÑÑекÑов (Ñаблон клаÑÑа) |
(C++11) |
ÑеализÑÐµÑ Ð¿ÐµÑемеÑаемÑÑ Ð¾Ð±Ð¾Ð»Ð¾ÑÐºÑ Ð²Ð»Ð°Ð´ÐµÐ½Ð¸Ñ Ð¼ÑÑÑекÑом (Ñаблон клаÑÑа) |
(C++14) |
ÑеализÑÐµÑ Ð¿ÐµÑемеÑаемÑÑ Ð¾Ð±ÑÑÑ Ð¾Ð±Ð¾Ð»Ð¾ÑÐºÑ Ð²Ð»Ð°Ð´ÐµÐ½Ð¸Ñ Ð¼ÑÑÑекÑом (Ñаблон клаÑÑа) |
(C++11) (C++11) (C++11) |
Ñип Ñега, иÑполÑзÑемого Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑÑаÑегии блокиÑовки (клаÑÑ) |
(C++11) (C++11) (C++11) |
ÑеговÑе конÑÑанÑÑ, иÑполÑзÑемÑе Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑÑаÑегии блокиÑовки (конÑÑанÑа) |
ÐбÑие алгоÑиÑÐ¼Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовки | |
(C++11) |
пÑÑаеÑÑÑ Ð¿Ð¾Ð»ÑÑиÑÑ Ð¿Ñаво ÑобÑÑвенноÑÑи на мÑÑÑекÑÑ ÑеÑез повÑоÑÑÑÑиеÑÑ Ð²ÑÐ·Ð¾Ð²Ñ try_lock (Ñаблон ÑÑнкÑии) |
(C++11) |
блокиÑÑÐµÑ ÑказаннÑе мÑÑÑекÑÑ, блокиÑÑеÑÑÑ, еÑли они недоÑÑÑÐ¿Ð½Ñ (Ñаблон ÑÑнкÑии) |
ÐÑзов один Ñаз | |
(C++11) |
вÑпомогаÑелÑнÑй обÑекÑ, гаÑанÑиÑÑÑÑий, ÑÑо call_once вÑзÑÐ²Ð°ÐµÑ ÑÑнкÑÐ¸Ñ ÑолÑко один Ñаз (клаÑÑ) |
(C++11) |
вÑзÑÐ²Ð°ÐµÑ ÑÑнкÑÐ¸Ñ ÑолÑко один Ñаз, даже еÑли она вÑзÑваеÑÑÑ Ð¸Ð· неÑколÑкиÑ
поÑоков (Ñаблон ÑÑнкÑии) |
[пÑавиÑÑ] УÑловнÑе пеÑеменнÑе
УÑÐ»Ð¾Ð²Ð½Ð°Ñ Ð¿ÐµÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÑÑо пÑимиÑив ÑÐ¸Ð½Ñ ÑонизаÑии, коÑоÑÑй позволÑÐµÑ Ð½ÐµÑколÑким поÑокам взаимодейÑÑвоваÑÑ Ð´ÑÑг Ñ Ð´ÑÑгом. Ðна позволÑÐµÑ Ð½ÐµÐºÐ¾ÑоÑÐ¾Ð¼Ñ ÐºÐ¾Ð»Ð¸ÑеÑÑÐ²Ñ Ð¿Ð¾Ñоков ждаÑÑ (возможно, Ñ Ñайм-аÑÑом) ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ Ð´ÑÑгого поÑока о Ñом, ÑÑо они могÑÑ Ð¿ÑодолжиÑÑ Ð²Ñполнение. УÑÐ»Ð¾Ð²Ð½Ð°Ñ Ð¿ÐµÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð²Ñегда ÑвÑзана Ñ Ð¼ÑÑÑекÑом.
ÐпÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð² заголовоÑном Ñайле
<condition_variable> | |
(C++11) |
пÑедоÑÑавлÑÐµÑ ÑÑловнÑÑ Ð¿ÐµÑеменнÑÑ, ÑвÑзаннÑÑ Ñ std::unique_lock (клаÑÑ) |
(C++11) |
пÑедоÑÑавлÑÐµÑ ÑÑловнÑÑ Ð¿ÐµÑеменнÑÑ, ÑвÑзаннÑÑ Ñ Ð»ÑбÑм Ñипом блокиÑовки (клаÑÑ) |
(C++11) |
планиÑÑÐµÑ Ð²Ñзов notify_all , коÑоÑÑй бÑÐ´ÐµÑ Ð²Ñзван, когда ÑÑÐ¾Ñ Ð¿Ð¾Ñок полноÑÑÑÑ Ð·Ð°Ð²ÐµÑÑиÑÑÑ (ÑÑнкÑиÑ) |
(C++11) |
пеÑеÑиÑлÑÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñе ÑезÑлÑÑаÑÑ Ð²ÑеменнÑÑ
ожиданий ÑÑловнÑÑ
пеÑеменнÑÑ
(пеÑеÑиÑление) |
СемаÑоÑÑСемаÑÐ¾Ñ ÑÑо ÑпÑоÑеннÑй пÑимиÑив ÑÐ¸Ð½Ñ ÑонизаÑии, иÑполÑзÑемÑй Ð´Ð»Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð²Ñеменного доÑÑÑпа к обÑÐµÐ¼Ñ ÑеÑÑÑÑÑ. Ðогда доÑÑаÑоÑно одного ÑеÑÑÑÑа, ÑемаÑÐ¾Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð±Ð¾Ð»ÐµÐµ ÑÑÑекÑивнÑм, Ñем ÑÑÐ»Ð¾Ð²Ð½Ð°Ñ Ð¿ÐµÑеменнаÑ.
ÐаÑÑлки и баÑÑеÑÑÐаÑÑлки и баÑÑеÑÑ ÑÑо Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ñ ÐºÐ¾Ð¾ÑдинаÑии поÑоков, коÑоÑÑе позволÑÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑоваÑÑ Ð»Ñбое колиÑеÑÑво поÑоков до ÑÐµÑ Ð¿Ð¾Ñ, пока не накопиÑÑÑ Ð¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð¾Ðµ колиÑеÑÑво поÑоков. ÐаÑÑÐ»ÐºÑ Ð½ÐµÐ»ÑÐ·Ñ Ð¸ÑполÑзоваÑÑ Ð¿Ð¾Ð²ÑоÑно, а баÑÑÐµÑ Ð¼Ð¾Ð¶Ð½Ð¾.
|
(наÑÐ¸Ð½Ð°Ñ Ñ C++20) |
[пÑавиÑÑ] РазделÑемÑе ÑоÑÑоÑниÑ
СÑандаÑÑÐ½Ð°Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñека пÑедоÑÑавлÑÐµÑ ÑÑедÑÑва Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð²Ð¾Ð·Ð²ÑаÑаемÑÑ Ð·Ð½Ð°Ñений и пеÑÐµÑ Ð²Ð°Ñа иÑклÑÑений, коÑоÑÑе генеÑиÑÑÑÑÑÑ Ð°ÑÐ¸Ð½Ñ ÑоннÑми задаÑами (Ñ.е. ÑÑнкÑиÑми, запÑÑкаемÑми в оÑделÑнÑÑ Ð¿Ð¾ÑÐ¾ÐºÐ°Ñ ). ÐÑи знаÑÐµÐ½Ð¸Ñ Ð¿ÐµÑедаÑÑÑÑ Ð² ÑовмеÑÑно иÑполÑзÑемом ÑоÑÑоÑнии, в коÑоÑом аÑÐ¸Ð½Ñ ÑÐ¾Ð½Ð½Ð°Ñ Ð·Ð°Ð´Ð°Ñа Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿Ð¸ÑÑваÑÑ ÑÐ²Ð¾Ñ Ð²Ð¾Ð·Ð²ÑаÑаемое знаÑение или ÑÐ¾Ñ ÑанÑÑÑ Ð¸ÑклÑÑение, и коÑоÑÑе могÑÑ Ð±ÑÑÑ Ð¿ÑовеÑенÑ, Ð¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ñ Ð¸ инÑм обÑазом ÑпÑавлÑÐµÐ¼Ñ Ð´ÑÑгими поÑоками, коÑоÑÑе ÑодеÑÐ¶Ð°Ñ ÑкземплÑÑÑ std::future или std::shared_future, коÑоÑÑе ÑÑÑлаÑÑÑÑ Ð½Ð° ÑÑо обÑее ÑоÑÑоÑние.
ÐпÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð² заголовоÑном Ñайле
<future> | |
(C++11) |
Ñ
ÑÐ°Ð½Ð¸Ñ Ð·Ð½Ð°Ñение Ð´Ð»Ñ Ð°ÑинÑ
Ñонного поиÑка (Ñаблон клаÑÑа) |
(C++11) |
ÑпаковÑÐ²Ð°ÐµÑ ÑÑнкÑÐ¸Ñ Ð´Ð»Ñ Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÐµÑ Ð²Ð¾Ð·Ð²ÑаÑаемого знаÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð°ÑинÑ
Ñонного извлеÑÐµÐ½Ð¸Ñ (Ñаблон клаÑÑа) |
(C++11) |
Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ Ð·Ð½Ð°Ñение, коÑоÑое ÑÑÑанавливаеÑÑÑ Ð°ÑинÑ
Ñонно (Ñаблон клаÑÑа) |
(C++11) |
Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ Ð·Ð½Ð°Ñение (возможно, на коÑоÑое ÑÑÑлаÑÑÑÑ Ð´ÑÑгие ÑазделÑемÑе ÑоÑÑоÑниÑ), коÑоÑое ÑÑÑанавливаеÑÑÑ Ð°ÑинÑ
Ñонно (Ñаблон клаÑÑа) |
(C++11) |
вÑполнÑÐµÑ ÑÑнкÑÐ¸Ñ Ð°ÑинÑ
Ñонно (возможно, в новом поÑоке) и возвÑаÑÐ°ÐµÑ std::future, коÑоÑÑй бÑÐ´ÐµÑ ÑодеÑжаÑÑ ÑезÑлÑÑÐ°Ñ (Ñаблон ÑÑнкÑии) |
(C++11) |
опÑеделÑÐµÑ Ð¿Ð¾Ð»Ð¸ÑÐ¸ÐºÑ Ð·Ð°Ð¿ÑÑка Ð´Ð»Ñ std::async (пеÑеÑиÑление) |
(C++11) |
опÑеделÑÐµÑ ÑезÑлÑÑаÑÑ Ð²ÑеменнÑÑ
ожиданий, вÑполненнÑÑ
Ð´Ð»Ñ std::future и std::shared_future (пеÑеÑиÑление) |
ÐÑибки ÑазделÑемÑÑ ÑоÑÑоÑний | |
(C++11) |
ÑообÑÐ°ÐµÑ Ð¾Ð± оÑибке, ÑвÑзанной Ñ ÑазделÑемÑми ÑоÑÑоÑниÑми или обеÑаниÑми (клаÑÑ) |
(C++11) |
опÑеделÑÐµÑ ÐºÐ°ÑегоÑÐ¸Ñ Ð¾Ñибки ÑазделÑемого ÑоÑÑоÑÐ½Ð¸Ñ (ÑÑнкÑиÑ) |
(C++11) |
опÑеделÑÐµÑ ÐºÐ¾Ð´Ñ Ð¾Ñибок ÑазделÑемÑÑ
ÑоÑÑоÑний (пеÑеÑиÑление) |
[пÑавиÑÑ] СмоÑÑиÑе Ñакже
ÐокÑменÑаÑÐ¸Ñ Ð¿Ð¾ C Ð´Ð»Ñ ÐиблиоÑека поддеÑжки поÑоков
|