mirror of
https://git.eworm.de/cgit/routeros-scripts
synced 2025-07-02 22:24:28 +02:00
global-functions: $ScriptLock: allow to wait for lock
This commit is contained in:
parent
5d30886e59
commit
7de3457f44
1 changed files with 6 additions and 0 deletions
|
@ -906,6 +906,7 @@
|
|||
:set ScriptLock do={
|
||||
:local Script [ :tostr $1 ];
|
||||
:local DoReturn $2;
|
||||
:local DoWait $3;
|
||||
|
||||
:global GetRandomNumber;
|
||||
:global IfThenElse;
|
||||
|
@ -949,6 +950,11 @@
|
|||
:local MyTicket [ $GetRandomNumber ];
|
||||
:set ($ScriptLockOrder->$Script) [ $AddTicket ($ScriptLockOrder->$Script) $MyTicket ];
|
||||
|
||||
:while ($DoWait = true && (($ScriptLockOrder->$Script->0) != $MyTicket || [ :len ($ScriptLockOrder->$Script) ] < $JobCount)) do={
|
||||
:delay 100ms;
|
||||
:set JobCount [ :len [ / system script job find where script=$Script ] ];
|
||||
}
|
||||
|
||||
:if ([ :len ($ScriptLockOrder->$Script) ] = $JobCount && ($ScriptLockOrder->$Script->0) = $MyTicket) do={
|
||||
:set ($ScriptLockOrder->$Script) [ $RemoveTicket ($ScriptLockOrder->$Script) $MyTicket ];
|
||||
:return false;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue