@ -6,6 +6,36 @@
 
			
		
	
		
			
				
					 * ) 
 
			
		
	
		
			
				
					open !  IStd  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					[ @@ @ warning  " -60 " ]  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					module  ProcLocker  :  sig  
			
		
	
		
			
				
					  val  setup  :  unit  ->  unit 
 
			
		
	
		
			
				
					    [ @@ warning  " -32 " ] 
 
			
		
	
		
			
				
					  (* *  This should be called once before trying to lock Anything.  *) 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					  val  try_lock  :  Procname . t  ->  bool 
 
			
		
	
		
			
				
					    [ @@ warning  " -32 " ] 
 
			
		
	
		
			
				
					  (* *  true = the lock belongs to the calling process false = the lock belongs to a different worker  *) 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					  val  unlock  :  Procname . t  ->  unit 
 
			
		
	
		
			
				
					    [ @@ warning  " -32 " ] 
 
			
		
	
		
			
				
					  (* *  This will work as a cleanup function because after calling unlock all the workers that need an 
 
			
		
	
		
			
				
					      unlocked  Proc  should  find  it's  summary  already  Cached .  Throws  if  the  lock  had  not  been  taken .  * ) 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					  val  clean  :  unit  ->  unit 
 
			
		
	
		
			
				
					    [ @@ warning  " -32 " ] 
 
			
		
	
		
			
				
					  (* *  This should be called when locks will no longer be used to remove any files or state that's 
 
			
		
	
		
			
				
					      not  necessary .  * ) 
 
			
		
	
		
			
				
					end  =  struct  
			
		
	
		
			
				
					  let  setup  ()  =  () 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					  let  try_lock  _ pname  =  true 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					  let  unlock  _ pname  =  () 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					  let  clean  ()  =  () 
 
			
		
	
		
			
				
					end  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					let  of_list  ( lst  :  ' a  list )  :  ' a  ProcessPool . TaskGenerator . t  =  
			
		
	
		
			
				
					  let  content  =  Queue . of_list  lst  in 
 
			
		
	
		
			
				
					  let  remaining  =  ref  ( Queue . length  content )  in