3
다음과 같은 코드를 생각해 보내기 보내기/오프의 조합을 사용하여Clojure : 에이전트 호출 에이전트 : 교착 상태 의심?
(let
[slave-agent (agent 0)
run-slave (fn [_] (println "running slave agent"))
run-master (fn [_]
(loop []
(println "sending to slave agent")
(send-off slave-agent run-slave)
(Thread/sleep 1000)
(recur)
)
)
master-agent (agent nil)
]
(send-off master-agent run-master)
)
을, 나는 노예 에이전트가 실행이 없습니다. 그러나 run-master를 java.lang.Thread에서 실행하면 모든 것이 잘 동작합니다.
누구나 아이디어가 있습니다.
는 작업 (또는 거래) completted (헌신적)까지 개최되는 에이전트 작업 (또는 거래)에서 당신감사
J-C
무슨 뜻인지 이해가되지 않습니다. 보내기에 사용되는 작업자 풀은 제한되지 않습니다. 그래서 질문의 예제 코드는 잘 작동 할 것입니다. 하나의 쓰레드 (run-master 액션 실행)만이'send-off' thread-pool의 쓰레드를 보유 할 것이기 때문입니다. 'send-off' 함수를 사용할 때마다 우리는 액션 실행이 차단 될 수 있고 올바르지 않거나 예기치 않은 행동이 아님을 안다. – hsestupin
코타 락의 설명이 정확하다는 것을 이해합니다. 문서를 읽은 후, 나는 단순히 send/send-off의 예상되는 동작을 이해하지 못했습니다. 도움 주셔서 감사합니다. – jcmincke
@hsestupin 요점은 'send'가 상담원 작업에서 즉시 발생하지 않는다는 점입니다. 작업이 완료 될 때까지 지연됩니다. 그 일은 결코 일어나지 않을 것입니다. – kotarak