std::condition_variable::notify_one – cppreference.com
Aus cppreference.com
<metanoindex/>
<tbody> </tbody>
|
|
(seit C++11) | |
Wenn alle Threads auf *this wartet, ruft notify_one freigibt einer der wartenden Threads .
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.
Parameter
(None)
Original:
(none)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Rückgabewert
(None)
Original:
(none)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Ausnahmen
Beispiel
#include <iostream> #include <condition_variable> #include <thread> #include <chrono> std::condition_variable 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(); }
Possible output:
Waiting... Notifying... Notifying again... ...finished waiting. i == 1
Siehe auch
| Benachrichtigt alle wartenden Threads (öffentliche Elementfunktion) [edit] | |