1

我正在研究 Kotlin 和 Quasar,并且正在尝试制作“Boom”游戏。我认为我的代码很好,但是当我执行时,它is hogging the CPU or blocking a thread.有时会发出警告或只是退出。

我做错了什么吗?

要旨

编辑:完整输出

4

1 回答 1

1
  1. 由于您正在生成演员但没有从主线程加入他们,因此后者可能会在前者完成执行之前退出。看看LocalActor.join
  2. 如果您同时加入两个参与者,您的程序将在一个失败时挂起,因为另一个将永远等待消息。失败时向其他参与者发送退出消息,或者使用超时接收并在发生超时时退出。
  3. 该警告是完全正常的,因为 Quasar 运行时和 JVM 在执行您的程序时仍在“预热”,因此例如在您的跟踪中,Quasar 正在执行一次性线程阻塞操作,同时验证您的可挂起注释。相反,我在标准输出(这是一个线程阻塞操作)上打印时得到了它,大概是因为 JVM 尚未优化该代码路径(可能它仍在解释模式下运行它)。如果需要,可以使用co.paralleluniverse.fibers.detectRunawayFibers系统属性禁用该警告。
于 2016-02-04T06:47:16.207 回答