2016-02-01 20 views
1

我正在學習Kotlin和Quasar,我正在嘗試製作「Boom」遊戲。我認爲我的代碼很好,但是當我執行時,它會給出is hogging the CPU or blocking a thread.警告,或者有時會退出。Kotlin/Quasar Fiber Warning and Quitting

我做錯了嗎?

gist

編輯:full output

+0

你有沒有-javaagent? – IRus

+0

是的,我們需要代理或構建儀器AFAIK的任務。它運行約3/5倍,但2/5我得到警告或意外退出 – Hyperion

+0

我可以建議看看演示在github從網絡研討會:http://blog.jetbrains.com/kotlin/2015/09/ webinar-recording-quasar-efficient-and-elegant-fibers-channels-and-actors/ – IRus

回答

1
  1. 既然你產卵的演員而不是從主線程加入他們,後者可以在前者執行完畢之前退出。看看LocalActor.join
  2. 如果你加入兩個演員,你的程序將在一個失敗時掛起,因爲另一個將永遠等待消息。發生故障時使用另一個參與者發送退出消息,或者在發生超時時使用超時接收並退出。
  3. 警告是完全正常的,因爲Quasar運行時和JVM在執行程序時仍然「熱身」,因此例如在您的跟蹤中,Quasar在驗證暫停註釋時執行一次線程阻塞操作。 這裏反而我在stdout上打印(這是一個線程阻塞操作),可能是因爲JVM沒有優化代碼路徑(可能它仍然在解釋模式下運行它)。如果您想要with the co.paralleluniverse.fibers.detectRunawayFibers system property,可以禁用該警告。
+0

Thx很多!我加入我的一個演員,禁用detectRunawayFibers – Hyperion