Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Mutex
Успадковує: RefCounted < Object
Для синхронізації кількох Threads.
Опис
М'ютекс синхронізації (взаємне виключення). Використовується для синхронізації кількох Thread і еквівалентний двійковому 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() таку ж кількість разів, щоб правильно його розблокувати.
Попередження: Виклик unlock() більше разів, ніж lock() у даному потоці, що призводить до спроби розблокувати незаблокований мьютекс, є неправильним і може призвести до збоїв або взаємоблокувань.