如何在Kotlin Native中设置协程调度器的线程优先级
我在我的多平台(android+iOS)应用程序中使用协同程序。为了能够使用多线程协程,我使用了构建。所以现在我需要创建一个运行在高优先级线程上的如何在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
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)