! Copyright (C) 2005, 2010 Chris Double, Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: dlists deques threads sequences continuations namespaces
-math quotations words kernel arrays assocs init system
-concurrency.conditions accessors locals fry vocabs.loader ;
+USING: accessors concurrency.conditions continuations deques
+dlists fry kernel locals sequences threads vocabs.loader ;
IN: concurrency.mailboxes
TUPLE: mailbox { threads dlist } { data dlist } ;
f mailbox-get-timeout ; inline
: mailbox-get-all-timeout ( mailbox timeout -- array )
- block-if-empty
- [ dup mailbox-empty? not ]
- [ dup data>> pop-back ]
- produce nip ;
+ block-if-empty data>> [ ] collector [ slurp-deque ] dip ;
: mailbox-get-all ( mailbox -- array )
f mailbox-get-all-timeout ;