2009년 4월 10일 금요일

F#에서 erlang 스타일의 message passing concurrency 사용

출처: http://strangelights.com/blog/archive/2007/10/24/1601.aspx

message passing concurrency 방법은 erlang이 원조 입니다. 그런데 왜 erlang을 사용하지 않고 f#으로 message passing concurrency를 사용하려 할까요. 아래와 같은 몇 가지 이유들이 있습니다.
- 고유의 runtime 상에 erlang은 구현되어 있습니다. 그래서 .NET과 비교하여 라이브러리와 지원 툴이 부족합니다.
- I/O가 느립니다.
- regular expression을 언어 차원에서 지원하지 않습니다. 따라서 regular expression을 자연스럽게 (natively) 사용할 수 없습니다.

따라서 erlang 말고 .NET의 이점을 이용할 수 있는 F#에서 message passing concurrency를 사용하는 것이 위의 반대 이유로 유리함을 제공합니다.

F#에서 agent를 만들기 위해 MailboxProcessor.Start 함수를 이용합니다. 이 함수는 또 다른 함수를 매개 변수로 받습니다.

댓글 없음:

댓글 쓰기