48 lines
		
	
	
		
			841 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			48 lines
		
	
	
		
			841 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								function master(xy) {
							 | 
						||
| 
								 | 
							
								  this.data=xy;
							 | 
						||
| 
								 | 
							
								  this.z=0;
							 | 
						||
| 
								 | 
							
								  this.child=null;
							 | 
						||
| 
								 | 
							
								  this.act = {
							 | 
						||
| 
								 | 
							
								    start : () => {
							 | 
						||
| 
								 | 
							
								      log('start');
							 | 
						||
| 
								 | 
							
								      this.child = fork({
							 | 
						||
| 
								 | 
							
								        data:{
							 | 
						||
| 
								 | 
							
								          x:random(1,50),
							 | 
						||
| 
								 | 
							
								          y:random(1,50)
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      })
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    compA: () => {
							 | 
						||
| 
								 | 
							
								      this.z=this.data.x+this.data.y;
							 | 
						||
| 
								 | 
							
								      log('z='+this.z)
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    compB: () => {
							 | 
						||
| 
								 | 
							
								      this.z=this.data.x*this.data.y;
							 | 
						||
| 
								 | 
							
								      log('z='+this.z); 
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    end : () => {
							 | 
						||
| 
								 | 
							
								      log(keys(this))
							 | 
						||
| 
								 | 
							
								      log(keys(this.act))
							 | 
						||
| 
								 | 
							
								      log(keys(this.trans))
							 | 
						||
| 
								 | 
							
								      if (this.on) log(keys(this.on))
							 | 
						||
| 
								 | 
							
								      kill()
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  this.trans = {
							 | 
						||
| 
								 | 
							
								    start:() => {
							 | 
						||
| 
								 | 
							
								      return this.data.x<10 && this.data.y<10?compB:compA
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    compA:end,
							 | 
						||
| 
								 | 
							
								    compB:end
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  this.on = {
							 | 
						||
| 
								 | 
							
								    SIG1: () => {
							 | 
						||
| 
								 | 
							
								      log('got SIG1')
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  this.next=start
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								compile(master)
							 | 
						||
| 
								 | 
							
								create('master',{x:5,y:7})
							 | 
						||
| 
								 | 
							
								start()
							 |