std::mutex::lock
De cppreference.com
<metanoindex/>
<tbody> </tbody> void lock(); |
(desde C++11) | |
Bloqueia o mutex. Se outro segmento já tenha travado o mutex, uma chamada para
lock irá bloquear a execução até que o bloqueio é adquirido.Original:
Locks the mutex. If another thread has already locked the mutex, a call to
lock will block execution until the lock is acquired.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.
Parâmetros
(Nenhum)
Original:
(none)
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.
Valor de retorno
(Nenhum)
Original:
(none)
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.
Exceções
Lança std::system_error quando ocorrem erros, incluindo erros do sistema operacional subjacente que impediriam
lock de cumprir suas especificações.Original:
Throws std::system_error when errors occur, including errors from the underlying operating system that would prevent
lock from meeting its specifications.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.
Note
A program may deadlock if a thread that already owns a mutex calls lock on that mutex. Alternatively, if an implementation can detect the deadlock, a resource_deadlock_would_occur error condition may be observed.
Exemplo
Este exemplo mostra como
lock unlock e pode ser utilizado para proteger os dados compartilhados .
Original:
This example shows how
lock and unlock can be used to protect shared data.
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>
int g_num = 0; // protected by g_num_mutex
std::mutex g_num_mutex;
void slow_increment(int id)
{
for (int i = 0; i < 3; ++i) {
g_num_mutex.lock();
++g_num;
std::cout << id << " => " << g_num << '\n';
g_num_mutex.unlock();
std::this_thread::sleep_for(std::chrono::seconds(1));
}
}
int main()
{
std::thread t1(slow_increment, 0);
std::thread t2(slow_increment, 1);
t1.join();
t2.join();
}
Potencial saída:
0 => 1
1 => 2
0 => 3
1 => 4
0 => 5
1 => 6
