std::condition_variable
De cppreference.com
![]() |
Esta página se ha traducido por ordenador/computador/computadora de la versión en inglés de la Wiki usando Google Translate.
La traducción puede contener errores y palabras aparatosas/incorrectas. Planea sobre el texto para ver la versión original. Puedes ayudar a corregir los errores y mejorar la traducción. Para instrucciones haz clic aquí. |
Definido en el archivo de encabezado <condition_variable>
|
||
class condition_variable; |
(desde C++11) | |
La clase
condition_variable
es una primitiva de sincronización que se puede utilizar para bloquear un hilo, o hilos de múltiples al mismo tiempo, hasta que:Original:
The
condition_variable
class is a synchronization primitive that can be used to block a thread, or multiple threads at the same time, until: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.
- se recibe una notificación de otro hiloOriginal:a notification is received from another threadThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - un tiempo de espera, oOriginal:a timeout expires, orThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - un activación espuria se produceOriginal:a activación espuria occursThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Cualquier hilo que tiene la intención de esperar en
std::condition_variable
tiene que adquirir un std::unique_lock primero. Las operaciones de espera atómicamente liberar la exclusión mutua y la suspensión de la ejecución de la rosca. Cuando la variable de estado se notifica, el hilo se despertó y volvió a adquirir el mutex está .Original:
Any thread that intends to wait on
std::condition_variable
has to acquire a std::unique_lock first. The wait operations atomically release the mutex and suspend the execution of the thread. When the condition variable is notified, the thread is awakened, and the mutex is reacquired.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.
La clase es un
std::condition_variable
StandardLayoutType
. No es CopyConstructible
, MoveConstructible
, CopyAssignable
, MoveAssignable
.Original:
The class
std::condition_variable
is a StandardLayoutType
. It is not CopyConstructible
, MoveConstructible
, CopyAssignable
, MoveAssignable
.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.
Tipos de miembros
Miembro de tipo
Original: Member type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
native_handle_type
|
' Definido por la implantación
Original: implementation-defined The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Las funciones miembro
Construye el objeto. (función miembro pública) | |
Destruye el objeto. (función miembro pública) | |
operator= [eliminada] |
No es asignable mediante copia. (función miembro pública) |
Original: Notification The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | |
Notifica a un hilo en espera. (función miembro pública) | |
Notifica a todos los hilos en espera. (función miembro pública) | |
Original: Waiting The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | |
Bloquea el hilo actual hasta que la variable de condición se despierte. (función miembro pública) | |
Bloquea el hilo actual hasta que la variable de condición se despierte o hasta después del tiempo de espera especificado. (función miembro pública) | |
Bloquea el hilo actual hasta que la variable de condición se despierte o se haya alcanzado el punto de tiempo especificado. (función miembro pública) | |
Original: Native handle The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | |
Devuelve el identificador nativo. (función miembro pública) |
Ejemplo
Ejecuta este código
#include <condition_variable> #include <mutex> #include <thread> #include <iostream> #include <queue> #include <chrono> int main() { std::queue<int> produced_nums; std::mutex m; std::condition_variable cond_var; bool done = false; bool notified = false; std::thread producer([&]() { for (int i = 0; i < 5; ++i) { std::this_thread::sleep_for(std::chrono::seconds(1)); std::unique_lock<std::mutex> lock(m); std::cout << "producing " << i << '\n'; produced_nums.push(i); notified = true; cond_var.notify_one(); } done = true; cond_var.notify_one(); }); std::thread consumer([&]() { std::unique_lock<std::mutex> lock(m); while (!done) { while (!notified) { // loop to avoid spurious wakeups cond_var.wait(lock); } while (!produced_nums.empty()) { std::cout << "consuming " << produced_nums.front() << '\n'; produced_nums.pop(); } notified = false; } }); producer.join(); consumer.join(); }
Posible salida:
producing 0 consuming 0 producing 1 consuming 1 producing 2 consuming 2 producing 3 consuming 3 producing 4 consuming 4