【问题标题】:Thread.sleep() in a native Kotlin project原生 Kotlin 项目中的 Thread.sleep()
【发布时间】:2019-06-07 09:33:26
【问题描述】:

我正在尝试创建一个简单的原生 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);
        ^

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

【问题讨论】:

  • 游乐场工作,但那不是 Kotlin 原生
  • 获取unresolved reference: delay,即使使用import kotlinx.coroutines
  • 你有什么相关的发现吗?

标签: kotlin kotlin-native


【解决方案1】:

如果您需要比秒数更精确,您可以像这样使用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 秒。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 请注意platform.posix.sleep() 只接受整数秒作为参数。所以问题中的 500 毫秒是不可能使用该 API 的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多