问题标签 [thread-priority]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何确保最高优先级的线程首先/最好地访问 CPU?
我有一个系统具有 CPU 昂贵的处理能力,但这不是时间关键的。同样的系统正在为 RESTful 端点提供服务,这些端点对时间要求很高,并且在其他处理运行时往往会严重陷入困境。我想创建两个线程池,一个具有高优先级线程,另一个具有低优先级,这样无论其他处理如何,RESTful 端点都将始终保持敏捷。
我创建了这个实验来尝试了解线程优先级:
我的线程比 CPU 内核多一个,以强制确定优先级。我期望的输出是低优先级线程显然花费的时间最长,高优先级线程显然花费的时间最少,剩下的两个线程在中间的某个地方。我的实际结果显示线程之间的性能几乎没有差别。
如何确保我的最高优先级线程(即 RESTful 端点处理,此处由 t2 表示)始终具有对 CPU 的第一/最佳访问权限?
c++ - Windows 7 中的进程和线程优先级
我有一个简单的“培训”项目,它必须显示 Windows 中的优先级机制。
这是我的 C++ 代码:
在代码中,我创建了 7 个具有不同线程优先级的线程。每个线程都有自己的计数器。程序应该运行大约 5 秒,然后控制台必须显示线程的优先级和它们的值。一年前我在 Win XP 32 上执行此操作时,一切正常 - 优先级较低的线程具有较小的计数器值。但现在我有这样奇怪的结果:
为什么优先级不起作用并且计数器具有如此奇怪的值(未按升序排序)?
java - Java 多线程 - 线程优先级
任何人都可以解释线程优先级在java中是如何工作的。这里的困惑是如果java不保证Thread
根据其优先级执行,那么为什么要setpriority()
使用这个函数。
我的代码如下:
在上面的程序中,即使我改变了优先级,我也发现输出没有区别。此外,如何使用线程优先级的实时应用程序也会有很大帮助。谢谢。
ios - 超高优先级后台工作或 QUARTZ 精度
我正在尝试为我的内部工作构建 iOS 应用程序。这个应用程序是简单的步进 MIDI 音序器。这个应用程序现在所做的就是向同一 iPad 上的“网络会话”发送简单的 midi 消息——这个会话人们称之为“虚拟 Midi”,抱歉我不知道正确的名称是什么——但这没关系,这部分对我来说工作正常,后台应用程序(如 animoog、ThumbJam 等)可以正常接收此消息...
唯一的主要问题是我遇到了问题。当我在 LOOP 中发送 midi 笔记(大约 1/8、1/16,无论如何)和应用程序进入后台时(当我按下主页按钮时)并且我在其他应用程序中旅行时,如 Mail、Safari、或在animoog中做某事,然后每次都是lug / buggy /。, 延迟工作。例如“Genome Midi Sequencer”——当我在 Mail、Safari 或其他应用程序中旅行和做某事时不拖着——换句话说,即使任何当前的应用程序占用了 CPU 中的所有资源——Genome Midi 排序器仍然在没有任何内容的情况下发送 midi 消息延迟。为什么?
如何构建相同的超高优先级 NSThread?,即使我打开其他应用程序并且它的负载CPU,这将不会有任何延迟?我注意到当“基因组”应用程序发送 midi 并且我滚动或触摸收件箱信件时,邮件应用程序会拖拽 - 这是正确的,因为 iOS 将基因组放在首位。我想要同样的。
这是我发送 MIDI 消息的方式:
我正在循环发送 Midi 笔记。所以听起来像 Dm,Dm,Dm,Dm ......每个 1/8。重要的是它们之间没有时间间隔/延迟。但它有延迟一段时间。
Main 高优先级 NSThread
/li>创建线程的方法
/li>在 AppDelegate.m 文件中
/li>
android - android cgroup 不适用于线程优先级?
来自https://plus.google.com/u/0/105051985738280261832/posts/XAZ4CeVP6DC,据说设置为背景优先级的线程将被放入特定的 cgroup 中,最多会消耗 10% 的 CPU。
我想在我的应用程序中限制一个任务的 CPU 使用率,所以我将优先级设置为背景,但它似乎不起作用。
所以我写了一个简单的应用程序来测试它,发现它会消耗与默认优先级相同的 CPU。我检查了两个线程的cgroup,一个在apps cgroup中,另一个在apps/bg_non_interactive cgroup中。
结果是:
c++ - Arduino Uno 的 C++ 调度程序
我想为基于 Arduino Uno (ATMega328P) 的程序创建/使用轻型自制调度程序(C++):我想根据优先级任务(根据执行时间)管理我的不同“任务”;你有一些例子吗?
非常感谢
安东尼
linux - 为什么在这种情况下会发生优先级反转 - Linux?
我已经阅读了很多关于优先级反转的帖子,但我仍然无法澄清我对某些部分的理解。如果有人能对我的问题有所了解,我会很高兴。
我们先描述一下情况。我有一个伪代码,这是不言自明的。
我有一个共享资源 - int t; 这是将由三个线程执行的函数 - 低优先级任务 p1、中优先级任务 p2、高优先级任务 p3。
假设 p1(low p).. 开始执行 func()。现在让我们说它在第 13 行。在互斥锁之后。意味着同时让我们说 p3 ..开始运行。现在,p3 将被阻塞,因为 p1 在临界区。因此,p3 进入阻塞状态。
场景 - p1 - 在临界区内部 - 处于运行状态。p3 - 阻塞状态。
现在,假设 p2 开始运行。由于 p2 处于运行状态,由于 p2 处于临界区,它也会被 p1 阻塞。那么这里怎么会发生优先级反转呢?之后我失去了理解,请解释我..
我下面的理解是否正确?如果不是,请更正。p2任务发生优先级反转时应该是什么情况?我知道当 p2 开始运行时会发生优先级反转。p2 完成后,p1 开始运行。而且 p3 永远没有机会。或者可能是在 p2 完成后,p3 运行。这使得 p3 延迟。在这种情况下,可能会发生互斥超时。
这是其中一种情况 - 我们软件中的错误。由于互斥锁超时而发生崩溃的地方。发生这种情况是因为有人说优先级倒置。这已通过将 mutex 属性设置为优先继承来解决。我试图对修复进行事后分析,但我坚持优先级反转的基本原理。我已经阅读了很多帖子 - 火星路径查找器,但我被我的问题所困扰。请在这里帮助我。
android - android上的pthread_create警告
调用pthread_create
函数后,我收到下一条消息:
W/libc (26409):pthread_create sched_setscheduler 调用失败:不允许操作
用于创建线程的代码是:
请注意,在 RunCallback 中的断点被命中之前,该消息会出现在 logcat 中。
你知道我为什么会有这个警告吗?忽略它是否安全 - 如果是,为什么?
PS:代码在具有 4.4.2 OS 版本(内部版本号 KOT49H)的 Nexus 4 设备上作为本机活动运行。
java - 调用数据库的线程耗时过长导致空指针
我有一个调用数据库的 init 方法。这里的想法是,当用户进入应用程序时,init 方法通过以下方式检查用户凭据:
它首先填充用户 bean,然后检查用户权限。我遇到的问题是,当我正常运行这个应用程序时,我得到一个 NullPointerException,但如果我在调试中运行它(我在这里放了一个断点)它工作正常。我相信这是因为这些数据库调用在不同的线程上运行需要更多时间,并且在应用程序使用数据时仍然为空。所以我的问题是解决这个问题的最佳方法是什么,以便应用程序能够在实际使用它们之前处理这些方法?
我试过做 Thread.sleep(1000),但这似乎很草率,而且工作了一半。
正常运行时堆栈跟踪如下:
c - 锁定互斥锁时的 Pthread 优先级
所以我有一个关于pthreads的问题。问题是我有 3 个线程让我们称它们为 T1、T2 和 T3。
然后 T1 锁定互斥锁,在访问临界区时,T2 和 T3 到达互斥锁,T2 必须在 T3 之前获取互斥锁(总是具有更高的优先级)。
我如何保证这将永远发生?