Page History
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
public class DeepThought
{
private int state;
public int State
{
get
{
lock (this)
{
Thread.Sleep(3000); //나의 상태에대한 깊은 생각에 빠짐..
return state;
}
}
set
{
lock (this)
{
//깊은 생각에 빠질땐 누구도 건들지 말기를 바람,그대가 멀티쓰레드라 할지라도
state = value;
}
}
}
}
var dt = new DeepThought()
Thread.new { console.log( dt.State ) }
Thread.new { dt.State=1 }
|
...
Code Block | ||||
---|---|---|---|---|
| ||||
public class MyActor: ReceiveActor
{
//Actor모델 에서는 안전한 동시성처리를 위해 어떠한 프로퍼티(속성)도 공유가 필요없음으로, 속성 접근제한에 priave만으로 충분합니다.
private readonly ILoggingAdapter log = Context.GetLogger();
private int state =0;
public MyActor()
{
Receive<string>(message => {
log.Info("Received String message: {0}", message);
Sender.Tell(state );
});
Receive<SomeMessage>(message => {...});
}
}
//코드변경없이 옵션으로 로컬,원격,클러스터등의 선택 전략이 가능하다.
var remoteActor = system.ActorSelection("akka.tcp://MyServer@127.0.0.1:8001/user/someActor");
// 질의를 하던지?(Ask), 단지 말만한다던지?(Tell), 결과를 기다리던지(Result)?
// 객체 접근 기반이아닌 메시지 전송기반의 인터페이스를 사용하는 조금더 추상화된 모델이다.
var state = remoteActor.Ask("Hello").Result;
|
...