30 lines
		
	
	
		
			676 B
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			676 B
		
	
	
	
		
			Factor
		
	
	
| USING: tools.test concurrency.exchangers
 | |
| concurrency.count-downs concurrency.promises locals kernel
 | |
| threads ;
 | |
| FROM: sequences => 3append ;
 | |
| IN: concurrency.exchangers.tests
 | |
| 
 | |
| :: exchanger-test ( -- string )
 | |
|     <exchanger> :> ex
 | |
|     2 <count-down> :> c
 | |
|     f :> v1!
 | |
|     f :> v2!
 | |
|     <promise> :> pr
 | |
| 
 | |
|     [
 | |
|         c await
 | |
|         v1 ", " v2 3append pr fulfill
 | |
|     ] "Awaiter" spawn drop
 | |
| 
 | |
|     [
 | |
|         "Goodbye world" ex exchange v1! c count-down
 | |
|     ] "Exchanger 1" spawn drop
 | |
| 
 | |
|     [
 | |
|         "Hello world" ex exchange v2! c count-down
 | |
|     ] "Exchanger 2" spawn drop
 | |
| 
 | |
|     pr ?promise ;
 | |
| 
 | |
| [ "Hello world, Goodbye world" ] [ exchanger-test ] unit-test
 |