原生Kotlin项目中的Thread.sleep()

时间:2019-06-07 09:33:26

标签: kotlin kotlin-native

我正在尝试创建一个简单的本地Kotlin项目。我希望我的项目在过程中等待X millisec:

import kotlin.concurrent

fun main() {
    Thread.sleep(500);
    println("Hello world")
}

要编译的命令:

kotlinc main.kt -o program.exe

但是出现以下错误:

main.kt:1:15: error: unresolved reference: concurrent
import kotlin.concurrent
              ^
main.kt:4:2: error: unresolved reference: Thread
        Thread.sleep(500);
        ^

我有点困惑,这不是延迟申请的正确方法吗?

2 个答案:

答案 0 :(得分:3)

如果您需要比秒更精确,您可以像这样使用 nanosleep 函数:

import platform.posix.nanosleep
import platform.posix.timespec

// ...

val time = cValue<timespec> {
    tv_sec = 2
    tv_nsec = 500000000
}

nanosleep(time, null)
  • tv_sec 是睡眠的秒数
  • tv_nsec 是额外的睡眠纳秒数(0 到 999999999)

上面的例子等待了 2.5 秒。

答案 1 :(得分:1)

首先,Kotlin / Native具有kotlin.native.concurrent库,这就是第一个错误的原因。但是即使在这一版本中,也没有Thread.sleep()这样的功能。相反,您可以尝试使用K / N的POSIX内置库中的platform.posix.sleep()函数。我不确定这种方法的用例是什么,但是如果您确实需要保留线程,这可能会有所帮助。