Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

이 클래스는 이야기한다, '내 작업이 끝날때까지, 해당 오브젝트를 건들지마(기달려야해)' 라고 이야기하고 있다.


OOP는 자신의 속성값 접근및 공유의 원칙으로 설계가 되기 때문에



접근공유문제를 쓰레드를 통해 동시성 문제 해결하기위해, 복잡한 쓰레드 모델을(CriticalSection,SpinLock,Mutex,Semaphore) 익혀야하며

메시지 전송모델에서, 확장및 동시성의 문제를 해결하기가 어려워진다확장하기가 어려워 집니다.


Actor

액터의 기본철학은, 액터가 차지하는 메모리 공간은 어느 다른 쓰레드혹은 동일 쓰레드에서도 접근할수 없다

...

Code Block
languagec#
titleActor 설계 코드
public class MyActor: ReceiveActor
{
  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");
var state = remoteActor.Ask("Hello").Result; // 질의를 하던지?(Ask),단지 말만한다던지?(Tell)  할수가 있다. 이것이 단순한 객체접근에서 조금더 추상화된 모델이다.


Actor는 오로지 메시만 주고 받으며 동시성을 달성하며,  결과값을 얻기위해서는 객체접근이아닌 질의를 해야한다.

...