std::mutex
Da 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 no cabeçalho <mutex>
|
||
class mutex; |
(desde C++11) | |
A classe
mutex
é um primitivo de sincronização que pode ser usado para proteger os dados compartilhados de ser acessado simultaneamente por vários segmentos.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
ofertas exclusivas, semântica não-recursivas propriedade: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.
- Um segmento chamado' possui um
mutex
a partir do momento que ele chama de sucesso oulock
outry_lock
até que ele chamaunlock
.Original:A calling thread owns amutex
from the time that it successfully calls eitherlock
ortry_lock
until it callsunlock
.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Quando um segmento possui um
mutex
, todos os outros segmentos irá bloquear (para chamadas paralock
) ou receber um valor de retorno false (paratry_lock
) se tentarem reivindicar a posse domutex
.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.
O comportamento de um programa é indefinido se um
mutex
é destruído enquanto ainda pertence por alguma thread. A classe mutex
não é copiável.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 membro
Tipo de membro
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
|
Definida pela implementação
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] Funções de membro
constrói o 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. (função pública membro) | |
Original: Locking The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | |
bloqueia o mutex, blocos se o mutex não está disponível 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. (função pública membro) | |
tenta bloquear o mutex, retorna se o mutex não está disponível 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. (função pública membro) | |
destrave o 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. (função pública membro) | |
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. | |
retorna o identificador segmento subjacente definida pela implementação 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. (função pública membro) |
[editar] Exemplo
Este exemplo mostra como um
mutex
pode ser usado para proteger uma std::map compartilhada entre dois segmentos .
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(); }
Saída:
http://bar => fake content http://foo => fake content