Mutex
Успадковує: RefCounted < Object
Для синхронізації кількох Threads.
Опис
Синхронізація слизових (мутуальна відчуження). Це використовується для синхронізації декількох Threads, і еквівалентний бінарним Semaphore. Це гарантує, що тільки одна нитка може отримати доступ до критичного розділу одночасно.
Це реактивний мусекс, що означає, що він може заблокувати кілька разів на одну нитку, за умови, що вона також розблокує її стільки разів.
** Попередження:** Мутекси повинні бути використані ретельно, щоб уникнути відмерлень.
** Попередження:** Для забезпечення належного очищення без аварійних відкладень або відхилень необхідно виконати наступні умови:
Коли кількість посилань Mutex досягає нуля, і тому вона знищена, немає ниток (в тому числі одного, на якому буде відбуватися руйнування) повинні бути зафіксовані.
Коли кількість посилань Thread досягає нуля, і тому вона знищена, вона не повинна мати ніяких замикань.
Посібники
Методи
void |
lock() |
try_lock() |
|
void |
unlock() |
Описи методів
void lock() 🔗
Locks this Mutex, блоки до тих пір, поки він не розблокував поточний власник.
Примітка: Ця функція повертається без блокування, якщо нитка вже має право власності на грязь.
Перемикаючи це Mutex, але не блокує. true на успіх, false інакше.
Примітка: Ця функція повертає true, якщо нитка вже має право власності на мутекс.
void unlock() 🔗
Розблокування цього Mutex, залишивши його на інші нитки.
Примітка: Якщо нитка називається lock() або try_lock() кілька разів, коли вже володіючи грою, вона також повинна викликати розблокування() однакову кількість разів, щоб розблокувати її правильно.
Попередження: Викликайте unlock() більше разів, що lock() на даній нитки, таким чином, закінчуючи спробами розблокувати нерозблокований мукс, неправильно і може викликати аварійні ситуації або зблокування.