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()
 |