3

我正在尝试创建一个简单的原生 Kotlin 项目。我希望我的项目在一个过程中等待 X 毫秒:

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);
        ^

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

4

2 回答 2

3

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

于 2019-06-07T14:22:24.817 回答
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 秒。

于 2021-04-11T13:31:05.747 回答