std::mutex
De cppreference.com
|
|
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. |
| Definido en la cabecera <mutex>
|
||
| class mutex; |
(desde C++11) | |
La clase
mutex es una primitiva de sincronización que se puede utilizar para proteger los datos compartidos de ser simultáneamente acceso a varios subprocesos .Original:
The
mutex class is a synchronization primitive that can be used to protect shared data from being simultaneously accessed by multiple 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.
mutex ofrece exclusivos y no-recurrentes semántica de propiedad:Original:
mutex offers exclusive, non-recursive ownership semantics: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.
- Un subproceso de la llamada' posee una
mutexdesde el momento en que se llama correctamente a cualquierlocktry_locko hasta que se llama aunlock.Original:A calling thread owns amutexfrom the time that it successfully calls eitherlockortry_lockuntil it callsunlock.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Cuando un hilo posee una
mutex, todos los otros hilos se bloqueará (para las llamadas alock) o recibir un valor de retorno false (portry_lock) si intentan reclamar la propiedad de lamutex.Original:When a thread owns amutex, all other threads will block (for calls tolock) or receive a false return value (fortry_lock) if they attempt to claim ownership of themutex.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Un subproceso de llamada no debe ser propietario de una
mutexantes de llamar alockotry_lock.Original:The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
El comportamiento de un programa es indefinido si un
mutex se destruye mientras sigue en manos de un hilo. La clase mutex no es copiable .Original:
The behavior of a program is undefined if a
mutex is destroyed while still owned by some thread. The mutex class is non-copyable.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] 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. |
[editar] Las funciones miembro
| construye el mutex Original: constructs the mutex The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
Original: Locking The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | |
| bloquea el mutex, si bloquea el mutex no está disponible Original: locks the mutex, blocks if the mutex is not available The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
| intenta bloquear el mutex, devuelve si la exclusión mutua no se encuentra disponible Original: tries to lock the mutex, returns if the mutex is not available The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
| desbloquea el mutex Original: unlocks the mutex The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
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 la implementación subyacente definida por el identificador de subproceso Original: returns the underlying implementation-defined thread handle The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
[editar] Ejemplo
Este ejemplo muestra cómo una
mutex se puede utilizar para proteger una std::map compartida entre dos hilos .
Original:
This example shows how a
mutex can be used to protect a std::map shared between two 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.
#include <iostream> #include <chrono> #include <thread> #include <mutex> #include <map> #include <string> std::map<std::string, std::string> g_pages; std::mutex g_pages_mutex; void save_page(const std::string &url) { // simulate a long page fetch std::this_thread::sleep_for(std::chrono::seconds(2)); std::string result = "fake content"; g_pages_mutex.lock(); g_pages[url] = result; g_pages_mutex.unlock(); } int main() { std::thread t1(save_page, "http://foo"); std::thread t2(save_page, "http://bar"); t1.join(); t2.join(); g_pages_mutex.lock(); for (const auto &pair : g_pages) { std::cout << pair.first << " => " << pair.second << '\n'; } g_pages_mutex.unlock(); }
Salida:
http://bar => fake content http://foo => fake content

