b087538119
This makes it easier to spot syntax errors when editing the class reference. The schema is referenced locally so validation can still work offline. Each class XML's schema conformance is also checked on GitHub Actions.
37 lines
1.7 KiB
XML
37 lines
1.7 KiB
XML
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<class name="Mutex" inherits="Reference" version="3.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
|
|
<brief_description>
|
|
A synchronization mutex (mutual exclusion).
|
|
</brief_description>
|
|
<description>
|
|
A synchronization mutex (mutual exclusion). This is used to synchronize multiple [Thread]s, and is equivalent to a binary [Semaphore]. It guarantees that only one thread can ever acquire the lock at a time. A mutex can be used to protect a critical section; however, be careful to avoid deadlocks.
|
|
</description>
|
|
<tutorials>
|
|
<link>$DOCS_URL/tutorials/performance/threads/using_multiple_threads.html</link>
|
|
</tutorials>
|
|
<methods>
|
|
<method name="lock">
|
|
<return type="void" />
|
|
<description>
|
|
Locks this [Mutex], blocks until it is unlocked by the current owner.
|
|
[b]Note:[/b] This function returns without blocking if the thread already has ownership of the mutex.
|
|
</description>
|
|
</method>
|
|
<method name="try_lock">
|
|
<return type="int" enum="Error" />
|
|
<description>
|
|
Tries locking this [Mutex], but does not block. Returns [constant OK] on success, [constant ERR_BUSY] otherwise.
|
|
[b]Note:[/b] This function returns [constant OK] if the thread already has ownership of the mutex.
|
|
</description>
|
|
</method>
|
|
<method name="unlock">
|
|
<return type="void" />
|
|
<description>
|
|
Unlocks this [Mutex], leaving it to other threads.
|
|
[b]Note:[/b] If a thread called [method lock] or [method try_lock] multiple times while already having ownership of the mutex, it must also call [method unlock] the same number of times in order to unlock it correctly.
|
|
</description>
|
|
</method>
|
|
</methods>
|
|
<constants>
|
|
</constants>
|
|
</class>
|