std::mutex
De cppreference.com
| 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
mutexa partir do momento que ele chama de sucesso oulockoutry_lockaté que ele chamaunlock.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. - Quando um segmento possui um
mutex, todos os outros segmentos irá bloquear (para chamadas paralock) ou receber um valor de retornofalse(paratry_lock) se tentarem reivindicar a posse domutex.Original:When a thread owns amutex, all other threads will block (for calls tolock) or receive afalsereturn 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.
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. |
Funções de membro
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
