问题标签 [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.

0 投票
3 回答
5332 浏览

c# - 在.net中将线程优先级从最低更改为最高

我试图通过让一个线程写入链接列表而另一个线程处理链接列表来加快速度。

出于某种原因,如果写入链表的方法我将它变成一个任务,而从链表读取的方法是一个低优先级线程,则程序整体完成的速度要快得多。换句话说,我在执行以下操作时会体验到最快的结果:

也许是因为第一个任务比另一个线程做了更多的工作,这就是为什么如果我将第二个方法设置为低优先级,所有事情作为一个整体都会更快地完成。

无论如何,现在我的问题是startProcessingItemsThreadPriority = Lowest的运行。我怎样才能将它的优先级更改为最高?如果我在该方法中创建一个新任务,它会以低优先级运行吗?基本上 startProcessingItems 以一个列表结束,一旦它有了这个列表,我就会以最高优先级开始执行。

0 投票
0 回答
72 浏览

.net - 使用单个任务执行多项工作

我想将多个工作项安排到一个任务,即一个任务应该一个接一个地执行一个任务。我知道 .continuewith() 任务的功能。我的问题有两个部分:

第一个问题是我还想为该任务安排优先级,我正在使用 romkyn 在这篇文章中建议的调度程序。

有什么方法可以让同一个任务在同一优先级下执行多项工作?

我正在生成超过 100 个任务,并以随机分配的优先级来安排它们,即最低、高于正常水平……最高。

在生成和执行阶段,如果生成了具有更高优先级的任务并且无法等待,我应该如何(a)知道和(b)取消正在使用 taskcancellationtoken 执行的任务?

现在,我使用一个简单的 for 循环和 taskfactory 来生成任务。

0 投票
3 回答
1250 浏览

java - 线程:最大优先级线程并不总是首先完成

我多次运行这个程序。有时具有最大优先级的线程“C”最后完成最大优先级是否不能确保它首先终止?我的意思是在任何其他线程退出循环之前?如果不是,调度程序策略是什么?

0 投票
1 回答
508 浏览

java - Java / 线程优先级

我有一个应用程序启动四个线程来监听传入的数据包。每个线程在不同的端口上打开一个套接字。通常,数据包一次只能在一个端口上接收,但在某些情况下,消息可以在两个端口上接收几秒钟。这些线程中的每一个都处理消息并更新一堆听众(他们都在做一些 Swing 绘画的事情)。由于消息以 10 Hz 的频率发送,并且 Swing 组件上的绘制动作需要一些时间,我的第一种方法是只处理 20 条消息中的一条(完成组件上的绘制需要 2 秒时间)。效果很好...

但是当当时收到两条消息时,我需要告诉我的应用程序只处理其中一条(只在短时间内收到的一条)。总之,在第二个端口上接收到 10 条消息,频率也为 10 Hz。意思是,使用第一种方法有时我会错过所有 10 个,因为只有 20 个被处理。

每当收到第二个端口上的消息时,我希望我的应用程序处理那个消息,不管在第一个端口上接收到什么或当时是否绘制了某些东西。

以下代码显示了我的线程的实现,其中四个同时启动,具体取决于通过构造函数给出的端口。

更新: 我开始新线程来更新监听器的原因是,因为它们都应该同时更新 GUI。每个updated调用paintComponent()不同的方法JPanel。所以他们应该一起运行。

UPDATE2: 我不能使用第一种方法,因为这会导致消息丢失可能是重要的消息(在第二个端口接收)。我需要的是,当收到正常的消息时,只需处理它并进行绘制,不管有多少新的正常消息(在第一个端口上)进来。但即使在第二个端口上只收到一个消息,应用程序需要处理那个,不管正常接收线程中发生了什么。

我想我在这里面临两个问题:

  1. 我需要让每个线程等到绘画完成,因为那是 UDP 我可以处理一个正常的数据包,而在绘画动作期间忘记所有后续的正常数据包。完成后,处理下一个正常数据包。

  2. 如果接收到第二个端口上的数据包,则中断所有正常的数据包处理操作并执行处理特殊数据包所需的事情。

使用 MainIncomingClass 中的 BitSet 解决了问题 (1)。每个 Listener 都使用某种回调函数来指示它已完成绘制并在 BitSet 中设置一个特定的 Bit。如果不是所有的都是真的,我不会处理任何新的数据包,只是让他们走。

0 投票
3 回答
634 浏览

c# - 使用 console.readline 设置线程优先级?C#

我想知道您是否可以通过让用户输入字符串(最低、低于正常等)来更改线程的优先级?据我所知,“ThreadPriority”是一个枚举,但我不知道该怎么做。

如何将BelowNormal 更改为用户输入的内容(ReadLine)?

谢谢!

0 投票
1 回答
4418 浏览

android - 有没有办法为Android中的线程或应用程序分配高优先级?

我编写了一个 Android 应用程序,它接收 UDP 数据包(正在流式传输)并在收到它们时立即播放。该应用程序运行良好,直到我单击 Android 手机上的另一个应用程序,那时我可以听到咔嗒声。

有什么办法可以解决这个问题吗?我想如果我可以为负责接收和播放数据包的线程分配一个高优先级,或者我是否可以为这个应用程序分配一个高优先级可能会有所帮助。

0 投票
1 回答
938 浏览

android - 在 Android 应用中,将当前线程优先级设置为小于 1 会导致强制关闭

我试图通过放置以下内容来增加应用程序中线程的优先级:

当前线程的正常优先级是 5,我可以更改N为低至 1,但如果我将其设置为 0 或 -1,我会在手机上收到强制关闭消息。

我不能增加这个线程的优先级有什么原因吗?

0 投票
1 回答
1478 浏览

linux - SCHED_FIFO 和 SCHED_RR 如何相互干扰?

SCHED_FIFO 和 SCHED_RR 都用于实时使用。我知道 SCHED_RR 可以被时间片抢占。但是假设我有一个线程设置为 SCHED_FIFO,另一个设置为 SCHED_RR,如果两个线程都准备好运行,它们是纯粹按优先级调度的吗?如果他们有相同的优先级怎么办?

0 投票
1 回答
783 浏览

linux - 基于优先级的线程(不是进程)调度

我有一个包含两个线程的进程。我想根据他们的priority(SCHED_RR policy). 让 t1、t2 表示这些线程,它们最初都具有优先级 1(最低)。

我想确保我的线程 t1 在执行关键任务时不会被抢占/重新调度 - 所以我在关键任务之前将其优先级提高到最大值,并在关键任务之后将其降低到原始值:

我希望printf()线程 t2 中的命令在我调用set_priority_max()线程 t1 后不会被执行。但输出也包含来自线程 t2 的打印。

  1. 为什么会这样?

  2. 我怎么解决这个问题?

0 投票
1 回答
4295 浏览

c - C中的Posix线程优先级

A thread which is joined to another can't continue its execution untill the thread to which it is joined has been completely executed or terminated.

遵循上述线程特性,我在以下代码中创建的最后一个线程也必须在过程中打印其语句,Func()但事实并非如此。这是为什么?

其次,我无法为priority我在这个程序中创建的任何线程进行设置。我错过了什么吗?

这是代码: