std::condition_variable_any::notify_one
Da cppreference.com
< cpp | thread | condition variable any
![]() |
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
void notify_one(); |
(desde C++11) | |
Se quaisquer segmentos estão aguardando em *this, chamando
notify_one
desbloqueia um dos segmentos de espera.Original:
If any threads are waiting on *this, calling
notify_one
unblocks one of the waiting threads.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Índice |
[editar] Parâmetros
(Nenhum)
Original:
(none)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[editar] Valor de retorno
(Nenhum)
Original:
(none)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[editar] Exceções
[editar] Exemplo
#include <iostream> #include <condition_variable> #include <thread> #include <chrono> std::condition_variable_any cv; std::mutex cv_m; int i = 0; bool done = false; void waits() { std::unique_lock<std::mutex> lk(cv_m); std::cout << "Waiting... \n"; cv.wait(lk, [](){return i == 1;}); std::cout << "...finished waiting. i == 1\n"; done = true; } void signals() { std::this_thread::sleep_for(std::chrono::seconds(1)); std::cout << "Notifying...\n"; cv.notify_one(); std::unique_lock<std::mutex> lk(cv_m); i = 1; while (!done) { lk.unlock(); std::this_thread::sleep_for(std::chrono::seconds(1)); lk.lock(); std::cerr << "Notifying again...\n"; cv.notify_one(); } } int main() { std::thread t1(waits), t2(signals); t1.join(); t2.join(); }
Potencial saída:
Waiting... Notifying... Notifying again... ...finished waiting. i == 1
[editar] Veja também
notifica todos os segmentos de espera Original: notifies all waiting threads The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (função pública membro) |