-! Copyright (C) 2008, 2010 Slava Pestov.\r
-! See http://factorcode.org/license.txt for BSD license.\r
-USING: deques threads kernel arrays sequences timers fry ;\r
-IN: concurrency.conditions\r
-\r
-: notify-1 ( deque -- )\r
- dup deque-empty? [ drop ] [ pop-back resume-now ] if ; inline\r
-\r
-: notify-all ( deque -- )\r
- [ resume-now ] slurp-deque ; inline\r
-\r
-: queue-timeout ( queue timeout -- timer )\r
- #! Add an timer which removes the current thread from the\r
- #! queue, and resumes it, passing it a value of t.\r
- [\r
- [ self swap push-front* ] keep '[\r
- _ _\r
- [ delete-node ] [ drop node-value ] 2bi\r
- t swap resume-with\r
- ]\r
- ] dip later ;\r
-\r
-ERROR: timed-out-error timer ;\r
-\r
-: queue ( queue -- )\r
- [ self ] dip push-front ; inline\r
-\r
-: wait ( queue timeout status -- )\r
- over [\r
- [ queue-timeout ] dip suspend\r
- [ timed-out-error ] [ stop-timer ] if\r
- ] [\r
- [ drop queue ] dip suspend drop\r
- ] if ; inline\r
+! Copyright (C) 2008, 2010 Slava Pestov.
+! See http://factorcode.org/license.txt for BSD license.
+USING: deques threads kernel arrays sequences timers fry ;
+IN: concurrency.conditions
+
+: notify-1 ( deque -- )
+ dup deque-empty? [ drop ] [ pop-back resume-now ] if ; inline
+
+: notify-all ( deque -- )
+ [ resume-now ] slurp-deque ; inline
+
+: queue-timeout ( queue timeout -- timer )
+ #! Add an timer which removes the current thread from the
+ #! queue, and resumes it, passing it a value of t.
+ [
+ [ self swap push-front* ] keep '[
+ _ _
+ [ delete-node ] [ drop node-value ] 2bi
+ t swap resume-with
+ ]
+ ] dip later ;
+
+ERROR: timed-out-error timer ;
+
+: queue ( queue -- )
+ [ self ] dip push-front ; inline
+
+: wait ( queue timeout status -- )
+ over [
+ [ queue-timeout ] dip suspend
+ [ timed-out-error ] [ stop-timer ] if
+ ] [
+ [ drop queue ] dip suspend drop
+ ] if ; inline