41 lines
		
	
	
		
			952 B
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			41 lines
		
	
	
		
			952 B
		
	
	
	
		
			Haxe
		
	
	
	
	
	
| 
								 | 
							
								import sys.thread.Thread;
							 | 
						||
| 
								 | 
							
								import sys.io.File;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@:cppInclude("./ThreadCode.cpp")
							 | 
						||
| 
								 | 
							
								class Test
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								   static var mainThread:Thread;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   @:native("runThread")
							 | 
						||
| 
								 | 
							
								   extern static function createNativeThread():Void;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   public static function callFromThread()
							 | 
						||
| 
								 | 
							
								   {
							 | 
						||
| 
								 | 
							
								      trace("Same:" + (mainThread==Thread.current()) );
							 | 
						||
| 
								 | 
							
								      mainThread.sendMessage("Done");
							 | 
						||
| 
								 | 
							
								   }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   public static function main()
							 | 
						||
| 
								 | 
							
								   {
							 | 
						||
| 
								 | 
							
								      var me = Thread.current();
							 | 
						||
| 
								 | 
							
								      mainThread = me;
							 | 
						||
| 
								 | 
							
								      Thread.create( function() {
							 | 
						||
| 
								 | 
							
								        File.copy("a.txt","b.txt");
							 | 
						||
| 
								 | 
							
								        me.sendMessage("Done");
							 | 
						||
| 
								 | 
							
								        trace("Same thread:" + (me==Thread.current()) );
							 | 
						||
| 
								 | 
							
								        } );
							 | 
						||
| 
								 | 
							
								      var result = Thread.readMessage(true);
							 | 
						||
| 
								 | 
							
								      trace(result);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      for(x in 0...20)
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								         trace("call...");
							 | 
						||
| 
								 | 
							
								         createNativeThread();
							 | 
						||
| 
								 | 
							
								         trace("zzz...");
							 | 
						||
| 
								 | 
							
								         Sys.sleep(1);
							 | 
						||
| 
								 | 
							
								         var result = Thread.readMessage(true);
							 | 
						||
| 
								 | 
							
								         trace(result);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								   }
							 | 
						||
| 
								 | 
							
								}
							 |