block-if-empty ( mailbox: mailbox timeout -- mailbox )


Vocabulary
concurrency.mailboxes

Inputs
mailboxa mailbox
timeouta duration or f


Outputs
mailboxa mailbox


Word description
Block the thread for timeout if the mailbox is empty.

Definition


TYPED:: block-if-empty
( mailbox: mailbox timeout -- mailbox )
timeout >deadline :> deadline mailbox data>>
'[ _ deque-empty? ] mailbox threads>>
'[ _ deadline "mailbox" wait ] while mailbox ;