Merge pull request #60502 from timothyqiu/sem-api
This commit is contained in:
commit
4c47e407a7
@ -2613,6 +2613,10 @@ Error _Semaphore::wait() {
|
|||||||
return OK; // Can't fail anymore; keep compat
|
return OK; // Can't fail anymore; keep compat
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Error _Semaphore::try_wait() {
|
||||||
|
return semaphore.try_wait() ? OK : ERR_BUSY;
|
||||||
|
}
|
||||||
|
|
||||||
Error _Semaphore::post() {
|
Error _Semaphore::post() {
|
||||||
semaphore.post();
|
semaphore.post();
|
||||||
return OK; // Can't fail anymore; keep compat
|
return OK; // Can't fail anymore; keep compat
|
||||||
@ -2621,6 +2625,7 @@ Error _Semaphore::post() {
|
|||||||
void _Semaphore::_bind_methods() {
|
void _Semaphore::_bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("wait"), &_Semaphore::wait);
|
ClassDB::bind_method(D_METHOD("wait"), &_Semaphore::wait);
|
||||||
ClassDB::bind_method(D_METHOD("post"), &_Semaphore::post);
|
ClassDB::bind_method(D_METHOD("post"), &_Semaphore::post);
|
||||||
|
ClassDB::bind_method(D_METHOD("try_wait"), &_Semaphore::try_wait);
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////
|
///////////////
|
||||||
|
@ -680,6 +680,7 @@ class _Semaphore : public Reference {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
Error wait();
|
Error wait();
|
||||||
|
Error try_wait();
|
||||||
Error post();
|
Error post();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -13,13 +13,21 @@
|
|||||||
<method name="post">
|
<method name="post">
|
||||||
<return type="int" enum="Error" />
|
<return type="int" enum="Error" />
|
||||||
<description>
|
<description>
|
||||||
Lowers the [Semaphore], allowing one more thread in. Returns [constant OK] on success, [constant ERR_BUSY] otherwise.
|
Lowers the [Semaphore], allowing one more thread in.
|
||||||
|
[b]Note:[/b] This method internals' can't possibly fail, but an error code is returned for backwards compatibility, which will always be [constant OK].
|
||||||
|
</description>
|
||||||
|
</method>
|
||||||
|
<method name="try_wait">
|
||||||
|
<return type="int" enum="Error" />
|
||||||
|
<description>
|
||||||
|
Like [method wait], but won't block, so if the value is zero, fails immediately and returns [constant ERR_BUSY]. If non-zero, it returns [constant OK] to report success.
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
<method name="wait">
|
<method name="wait">
|
||||||
<return type="int" enum="Error" />
|
<return type="int" enum="Error" />
|
||||||
<description>
|
<description>
|
||||||
Tries to wait for the [Semaphore], if its value is zero, blocks until non-zero. Returns [constant OK] on success, [constant ERR_BUSY] otherwise.
|
Waits for the [Semaphore], if its value is zero, blocks until non-zero.
|
||||||
|
[b]Note:[/b] This method internals' can't possibly fail, but an error code is returned for backwards compatibility, which will always be [constant OK].
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
</methods>
|
</methods>
|
||||||
|
Loading…
Reference in New Issue
Block a user