-! Copyright (C) 2008, 2010 Slava Pestov.\r
-! See http://factorcode.org/license.txt for BSD license.\r
-USING: kernel threads boxes accessors fry ;\r
-IN: concurrency.exchangers\r
-\r
-! Motivated by\r
-! http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/Exchanger.html\r
-\r
-TUPLE: exchanger thread object ;\r
-\r
-: <exchanger> ( -- exchanger )\r
- <box> <box> exchanger boa ;\r
-\r
-: exchange ( obj exchanger -- newobj )\r
- dup thread>> occupied>> [\r
- dup object>> box>\r
- [ thread>> box> resume-with ] dip\r
- ] [\r
- [ object>> >box ] keep\r
- [ self ] dip thread>> >box\r
- "exchange" suspend\r
- ] if ;\r
+! Copyright (C) 2008, 2010 Slava Pestov.
+! See http://factorcode.org/license.txt for BSD license.
+USING: kernel threads boxes accessors fry ;
+IN: concurrency.exchangers
+
+! Motivated by
+! http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/Exchanger.html
+
+TUPLE: exchanger thread object ;
+
+: <exchanger> ( -- exchanger )
+ <box> <box> exchanger boa ;
+
+: exchange ( obj exchanger -- newobj )
+ dup thread>> occupied>> [
+ dup object>> box>
+ [ thread>> box> resume-with ] dip
+ ] [
+ [ object>> >box ] keep
+ [ self ] dip thread>> >box
+ "exchange" suspend
+ ] if ;