Page History
...
Expand | ||
---|---|---|
| ||
그 이후 위 약점을 보완하려고, 다양한 언어로 디자인 패턴 활용방법에 대한 책이 쏟아져 나왔지만 개인적인 디자인패턴에대한 경험은 다음과 같습니다.
|
OOP와 비교해본 Actor Model
OOP(Object-oriented programming)
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 } |
자신의 상태변경및 제공을 멀티스레드에 안전한 방식으로 OOP를 OOP방식으로 설계한다고 가정하자
이 클래스는 이야기한다, '자신의 속성을 Lock(metex)를 걸어 , 누군가 나를 접근하고 있을때, 해당 오브젝트를 건들지마(또는 기달려야해)' 라고 이야기하고 있다.
...
어려운 스레드 모델을 사용해야할 필요가 없어집니다.
물론 이러한 Actor도 OOP방식으로 설계가되었으나, 접근 방식의 중심점을 객체가 아닌 메시지를 통해 한다는점에서의 차이입니다.
배워야 되지 않는다는 의미는 아님,오히려
기존 방식의 어려운점을 알아야 더 잘활용할수 있습니다.
하지만 멀티스레드 구현에 너무 집중하지말고 관련 스레드 모델 컨셉 정도만 익히는것으로 충분합니다.
...