std::defer_lock_t, std::try_to_lock_t, std::adopt_lock_t
Da cppreference.com.
![]() | Questa pagina è stata tradotta in modo automatico dalla versione in ineglese della wiki usando Google Translate. La traduzione potrebbe contenere errori e termini strani. Muovi il puntatore sopra al testo per vedere la versione originale. Puoi aiutarci a correggere gli gli errori. Per ulteriori istruzioni clicca qui. |
struct defer_lock_t {}; | (dal C++11) | |
struct try_to_lock_t {}; | (dal C++11) | |
struct adopt_lock_t {}; | (dal C++11) | |
std::defer_lock_t
, std::try_to_lock_t
e std::adopt_lock_t
sono vuote tipi struct tag utilizzati per specificare blocco strategia per std::lock_guard e std::unique_lock.Original:
std::defer_lock_t
, std::try_to_lock_t
and std::adopt_lock_t
are empty struct tag types used to specify locking strategy for std::lock_guard and std::unique_lock.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.
Tipo Original: Type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | Effect(s) |
defer_lock_t | non acquisire la proprietà del mutex Original: do not acquire 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. |
try_to_lock_t | cercare di acquisire la proprietà del mutex senza bloccare Original: try to acquire ownership of the mutex without blocking The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
adopt_lock_t | assumere il thread chiamante ha già la proprietà del mutex Original: assume the calling thread already has 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. |
[modifica]Esempio
#include <mutex>#include <thread> struct bank_account {explicit bank_account(int balance): balance(balance){}int balance;std::mutex m;}; void transfer(bank_account &from, bank_account &to, int amount){// attempt to lock both mutexes without deadlockstd::lock(from.m, to.m); // make sure both already-locked mutexes are unlocked when // we're done; if we just used the lock_guard without std::lock// and std::adopt_lock, we might deadlock with other calls to transferstd::lock_guard lock1(from.m, std::adopt_lock);std::lock_guard lock2(to.m, std::adopt_lock); from.balance-= amount; to.balance+= amount;} int main(){ bank_account my_account(100); bank_account your_account(50); std::thread t1(transfer, my_account, your_account, 10);std::thread t2(transfer, your_account, my_account, 5); t1.join(); t2.join();}
[modifica]Vedi anche
costanti tag utilizzato per specificare strategia di blocco Original: tag constants used to specify locking strategy The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (costante) | |
costruisce un lock_guard, opzionalmente bloccare il mutex dato Original: constructs a lock_guard, optionally locking the given mutex The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (metodo pubblico) | |
costruisce un unique_lock , eventualmente bloccare il mutex in dotazione Original: constructs a unique_lock , optionally locking the supplied mutex The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (metodo pubblico) |