All pastes #2053879 Raw Edit

Mine

public text v1 · immutable
#2053879 ·published 2011-05-04 16:24 UTC
rendered paste body
package dje.pas.rw

import scala.actors.Actor;

abstract class Msg;
case class Read(unitId:Int) extends Msg;
case class Write extends Msg;
class MonitorProcess extends Actor{
	var belegt:Boolean=false;
	def act(){
		loop{
			react{
				case Read(unitId) =>
				println("Client mit unitId: "+unitId+" darf jetzt nicht schreiben und liest daher!");
				
				case Write =>
				if (belegt==false) {
					reply(false);
				}
				else{
					reply(true);
				}
			}
		}
	}
	def setBelegt(b:Boolean){
		belegt=b;
	}
}

class Client(id:Int, server:MonitorProcess) extends Actor{
	def act(){
		while(true){
			var b=server!?Write
			if(b==false){
				server.setBelegt(true);
				println("Client "+id+" schreibt jetzt!");
				Thread.sleep(5*id);
				server.setBelegt(false);
				println("Client "+id+" gibt den Schreiber jetzt frei!");
			}
			else{
				server!Read
			}
		}
	}
}

object ActiveMonitorTestApp{
	def main(args:Array[String]):Unit={
		val server=new MonitorProcess
		server.start
		
		for(i<- 100 to 200){
			val client=new Client(i, server)
			client.start
		}
	}
}