如何在Kotlin Native中设置协程调度器的线程优先级

如何在Kotlin Native中设置协程调度器的线程优先级,kotlin,kotlin-coroutines,kotlin-native,Kotlin,Kotlin Coroutines,Kotlin Native,我在我的多平台(android+iOS)应用程序中使用协同程序。为了能够使用多线程协程,我使用了构建。所以现在我需要创建一个运行在高优先级线程上的CoroutineDispatcher。在android上,我就是这样做的 val thread = HandlerThread("myThread", -20).also { it.start() } val highPriorityDispatcher = Handler(thread.looper).asCorouti

我在我的多平台(android+iOS)应用程序中使用协同程序。为了能够使用多线程协程,我使用了构建。所以现在我需要创建一个运行在高优先级线程上的
CoroutineDispatcher
。在android上,我就是这样做的

val thread = HandlerThread("myThread", -20).also {
    it.start()
}
val highPriorityDispatcher = Handler(thread.looper).asCoroutineDispatcher()
有没有办法在iOS上创建类似的高优先级调度程序

首先,我尝试使用创建一个新的调度程序。在k/n中,生成的调度程序公开了它的优先级,但我没有找到任何方法来设置工作优先级。 我还尝试使用以下方法提高线程优先级:

但它似乎没有起到应有的作用


我正在考虑使用编写一个自定义调度程序,但这似乎是一项非常重要的任务。因此,如果有人能帮我找到一个更简单的方法来解决这个问题,我将不胜感激。

好的,事实上我似乎错了

val highPriorityDispatcher = newSingleThreadContext("myThread").also {
    scope.launch(it){
        NSThread.setThreadPriority(1.0)
    }
}
执行作业并实际更改优先级,在iOS事件探查器中确认。 最后我还加了一句

  pthread_set_qos_class_self_np(QOS_CLASS_USER_INTERACTIVE, 0)
调用以设置QoS。我使用了
pthread
版本,因为它说

NSThread拥有类型为的qualityOfService属性 服务质量。此类不会根据 它的执行上下文,因此此属性的值可能仅为 在线程启动之前已更改。解读服务质量 线程随时提供其当前值

  pthread_set_qos_class_self_np(QOS_CLASS_USER_INTERACTIVE, 0)