std::mutex - cppreference.com
Espaços nominais
Variantes
Ações

std::mutex

De cppreference.com


 
 
Biblioteca de suporte a discussão
Threads
Original:
Threads
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
(C++11)
this_thread namespace
Original:
this_thread namespace
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
(C++11)
(C++11)
(C++11)
Exclusão mútua
Original:
Mutual exclusion
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
(C++11)
Gestão de bloqueio genérico
Original:
Generic lock management
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
Variáveis ​​de condição
Original:
Condition variables
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
(C++11)
Futuros
Original:
Futures
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
(C++11)
(C++11)
(C++11)
(C++11)
 
std::mutex
Funções de membro
Original:
Member functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
mutex::mutex
Bloqueio
Original:
Locking
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
mutex::lock
mutex::try_lock
mutex::unlock
Identificador nativo
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.
mutex::native_handle
 
<tbody> </tbody>
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.
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.
  • Um segmento chamado' possui um mutex a partir do momento que ele chama de sucesso ou lock ou try_lock até que ele chama unlock.
    Original:
    A calling thread owns a mutex from the time that it successfully calls either lock or try_lock until it calls unlock.
    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 para lock) ou receber um valor de retorno false (para try_lock) se tentarem reivindicar a posse do mutex.
    Original:
    When a thread owns a mutex, all other threads will block (for calls to lock) or receive a false return value (for try_lock) if they attempt to claim ownership of the mutex.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • A thread de chamada não deve possuir um mutex antes de chamar lock ou try_lock.
    Original:
    A calling thread must not own a mutex prior to calling lock or try_lock.
    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.

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.

#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