gpt4 book ai didi

c++ - NSOperationQueue 与 pthread 优先级

转载 作者:太空宇宙 更新时间:2023-11-04 12:09:42 25 4
gpt4 key购买 nike

我有这个问题:

  • 我有一个使用一些线程的 C++ 代码。这些线程是 pthread 类型。
  • 在我的 iPhone 应用程序中,我使用 NSOperationQueue 和一些 C++ 代码。

问题是:C++ pthread 的优先级总是低于 NsOperationQueue

我该如何解决这个问题?我也尝试过降低 NSOpertionQueue 的优先级,但此修复不起作用。

最佳答案

如果您不得不求助于摆弄优先级(尤其是向上),这通常表明并发模型存在设计缺陷。这应该保留用于非常特殊的情况,例如实时线程(例如音频播放)。

首先评估您的线程和任务的运行方式,并确保您别无选择。通常,您可以做一些简单的事情,例如减少操作队列的最大操作数、减少总线程数,或者按任务所需的资源对任务进行分组。

您使用什么方法来确定线程的优先级?

另请注意,设置操作的优先级会影响排队操作的顺序(而不是线程本身)。

我总是能够通过调整分布来解决这个问题。你现在应该停止阅读 :)


可用,但不推荐:

要降低操作的优先级,您可以在操作的 main 中接近它:

- (void)main
{
@autorelease {
const double priority = [NSThread threadPriority];
const bool isMainThread = [NSThread isMainThread];
if (!isMainThread) {
[NSThread setThreadPriority:priority * 0.5];
}

do_your_work_here

if (!isMainThread) {
[NSThread setThreadPriority:priority];
}
}
}

如果你真的需要在所有这些之后推送内核,这就是你可以设置 pthread 优先级的方法:

pthreads with real time priority

How to increase thread priority in pthreads?

关于c++ - NSOperationQueue 与 pthread 优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10348083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com