eventloop
은 Scala Actors에서 무엇을하며 무엇에 유용합니까?"eventloop"기능은 스칼라 액터에서 무엇을합니까?
답변
eventloop
은 loop
및 react
과 결합하여 작동합니다. loop
과 eventloop
의 차이점은 실제로 loop
은 본문을 재귀 적으로 호출하지 않고 (스레드 기반 액터의 스택 오버플로를 방지하기 위해) 사서함에서 다음 메시지를 처리 (응답/수신)하도록 예약하고 완료합니다 호출 스택을 정리하기 위해 예외를 던지는 현재 처리기를 실행합니다.
eventloop
재귀 react
사용하여 메시지를 처리 - react
의 경우에 react
의 몸 (!하지만 receive
)는 항상 대부분의 경우, 예외로 끝나는 있기 때문에, (그리고 스택 오버 플로워하지 않음) 안전, 및 다음 루프를 스케쥴링하여 모든 액터의 스레드 풀 양식에 대한 공정한 액세스를 보장합니다. 따라서 eventloop
은 이벤트 중심 액터에서만 사용할 수 있습니다.
import scala.actors._
import Actor._
class EventLoop extends Actor {
def act = eventloop{
case msg => println("Received " + msg)
}
}
어쩌면 this thread 몇 가지 세부 사항 제공 할 수 있습니다 : 배우에 대한
하나의 중요한 동기는 그들이 당신 이 최대 하나의 스레드 한 번에 배우 내부에서 실행 있다는 것을 의미 제어 반전을 방지 할 수 있다는 것입니다, 그리고를 사용자는 일 때 제어 흐름의 명시적인 지점에서 메시지를 기다리는 직선 프로그램을 작성하여 처리 할시기를 선택합니다.
이 모델에서는 대개 콜백 함수를 비동기 적으로 호출하는 다른 스레드로 전달하지 않으려합니다. 대신 다른 스레드는 메시지를 보내어 액터와 상호 작용해야합니다. 콜백 같은 행동이 다음 원하는 경우 는 다음과 같은 패턴은 스레드 안전한 방법에서 달성 :
def eventloop() {
react {
case Event1 =>
// handle Event1
eventloop()
...
case Eventn =>
// handle Eventn
eventloop()
} }
이 패턴은
Actor.eventloop
에서 추상 작업으로 제공됩니다
import scala.actors.Actor._
eventloop {
case Event1 =>
// handle Event1
case Eventn =>
// handle Eventn
}
일부 func에 대한 꼬리 호출이 필요 없음을 유의하십시오 더 이상.
그
2008에서 스레드 날짜를 고려했다되고, 그리고 Scala Actor API guide 어쩌면이가 자주 사용하지 않는, 한 번eventloop
을 언급하지 않습니다.
Vasil Remeniuk 전문적으로
eventloop
을
his answer (+1)으로 사용하고 "
Client-Server example with Scala actors"이라는 질문에 구체적인 예를 제공합니다.
- 1. 스칼라 액터에서 '자아'는 어떻게 작동합니까?
- 2. 스칼라 액터에서 while (true) 대신 loop를 사용하면 어떻게됩니까?
- 3. 스칼라 액터에서 메일 박스 (메시지 대기열)가 어떻게 구현됩니까?
- 4. 스칼라 액터 메시지 정의
- 5. gamesalad 액터에서 x 축의 화면 밖으로 이동
- 6. 스칼라 일치/비교 열거 형
- 7. 스칼라 2.8Beta1 배우
- 8. 스칼라
- 9. 스칼라
- 10. 스칼라
- 11. 스칼라
- 12. 스칼라
- 13. 스칼라 : 나는 스칼라 시험을 검색했다
- 14. SIFT는 무엇을합니까?
- 15. FormsAuthentication.SetAuthCookie는 무엇을합니까
- 16. 이것은 무엇을합니까?
- 17. Ruby에서 == 무엇을합니까?
- 18. 이것은 무엇을합니까?
- 19. __sync_synchronize는 무엇을합니까?
- 20. AllowReversePInvokeCallsAttribute는 무엇을합니까?
- 21. NSData로 무엇을합니까?
- 22. System.Concurrency.AsyncLock은 무엇을합니까?
- 23. kSecReturnPersistentRef는 무엇을합니까?
- 24. IsGUIThread - 무엇을합니까?
- 25. mod_pagespeed는 무엇을합니까?
- 26. PHP에서 무엇을합니까 ===
- 27. ReliabilityContractAttribute는 무엇을합니까?
- 28. 이것은 무엇을합니까?
- 29. 이것은 무엇을합니까?
- 30. sizeof는 무엇을합니까?