forked from LeenkxTeam/LNXSDK
		
	
		
			
				
	
	
		
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
package eval.luv;
 | 
						|
 | 
						|
/**
 | 
						|
	Threads.
 | 
						|
 | 
						|
	@see https://aantron.github.io/luv/luv/Luv/Thread
 | 
						|
 | 
						|
	`eval.luv` integrates libuv with the OCaml runtime lock. This means that, as
 | 
						|
	in any other OCaml program, two threads cannot be running OCaml code at the
 | 
						|
	same time. Thus, two threads cannot be running Haxe code at the same time
 | 
						|
	because eval interpreter is written in OCaml.
 | 
						|
	However, `eval.luv` releases the lock when calling a potentially-blocking libuv API,
 | 
						|
	so that other threads can run while the calling thread is blocked. In particular,
 | 
						|
	the lock is released during calls to `eval.luv.Loop.run`, which means that other
 | 
						|
	threads can run in between when you make a call to a non-blocking API, and when
 | 
						|
	its callback is called by libuv.
 | 
						|
**/
 | 
						|
@:coreType abstract Thread {
 | 
						|
	/**
 | 
						|
		Returns the representation of the calling thread.
 | 
						|
	**/
 | 
						|
	static public function self():Thread;
 | 
						|
 | 
						|
	/**
 | 
						|
		Starts a new thread, which will run the given function.
 | 
						|
	**/
 | 
						|
	static public function create(fn:()->Void, ?stackSize:Int):Result<Thread>;
 | 
						|
 | 
						|
	/**
 | 
						|
		Waits for the thread to terminate.
 | 
						|
	**/
 | 
						|
	public function join():Result<Result.NoData>;
 | 
						|
 | 
						|
} |