31 lines
		
	
	
		
			763 B
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			763 B
		
	
	
	
		
			Factor
		
	
	
| ! Copyright (C) 2008, 2011 Slava Pestov.
 | |
| ! See http://factorcode.org/license.txt for BSD license.
 | |
| USING: continuations init io.backend kernel namespaces threads ;
 | |
| IN: io.thread
 | |
| 
 | |
| ! The Cocoa and Gtk UI backend stops the I/O thread and takes
 | |
| ! over completely.
 | |
| SYMBOL: io-thread-running?
 | |
| 
 | |
| TUPLE: io-thread < thread ;
 | |
| 
 | |
| : <io-thread> ( -- thread )
 | |
|     [
 | |
|         [ io-thread-running? get-global ]
 | |
|         [ sleep-time io-multiplex yield ]
 | |
|         while
 | |
|     ]
 | |
|     "I/O wait"
 | |
|     io-thread new-thread ;
 | |
| 
 | |
| M: io-thread error-in-thread [ die ] call( error thread -- * ) ;
 | |
| 
 | |
| : start-io-thread ( -- )
 | |
|     t io-thread-running? set-global
 | |
|     <io-thread> (spawn) ;
 | |
| 
 | |
| : stop-io-thread ( -- )
 | |
|     f io-thread-running? set-global ;
 | |
| 
 | |
| [ start-io-thread ] "io.thread" add-startup-hook
 |