You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Чтобы избежать такого кода и наличия параметра step
while token_for_wait:
sync_sleep(step)
Можно использовать condition variable (привязанную к токену на котором вызываем wait):
with cv:
while token_for_wait:
cv.wait(timeout)
а в методе cancel:
вызывать cv.notify_all()
В оригинальном варианте такой подход осложнялся бы наличием вложенных токенов. Однако если использовать оптимизацию из предыдущего issue, то все должно работать.
P. S. единственное я не знаю как cv будет работать в случае async. По первым результатам из yandex поиска кажется, что можно заменить cv на asyncio.Event и все тоже получится.
The text was updated successfully, but these errors were encountered:
Твой вариант отлично подошел бы в ситуации, будь токены из cantok отменяемыми только вызовом у них метода cancel(). В этом случае в данном методе достаточно было бы сделать как ты написал, чтобы "разморозить" все ожидающие токены.
Однако в текущую имплементацию эта идея, к сожалению, не вписывается. Дело в том, что тут есть типы токенов, которые умеют отменяться, скажем, по таймауту, или даже по наступлению произвольного условия. Чтобы проверять наступление произвольного условия нет другого способа, кроме как периодически вызывать функцию, которая его в себе содержит. Именно поэтому текущая реализация такова, какова она есть.
Чтобы избежать такого кода и наличия параметра
step
Можно использовать condition variable (привязанную к токену на котором вызываем wait):
а в методе cancel:
вызывать
cv.notify_all()
В оригинальном варианте такой подход осложнялся бы наличием вложенных токенов. Однако если использовать оптимизацию из предыдущего issue, то все должно работать.
P. S. единственное я не знаю как
cv
будет работать в случаеasync
. По первым результатам из yandex поиска кажется, что можно заменитьcv
наasyncio.Event
и все тоже получится.The text was updated successfully, but these errors were encountered: