如何设置主线程优先级

问题描述 投票:0回答:3

我有一个运行 44*3=132 个线程 + 主线程的应用程序,每 3 个线程代表一个 tcp 客户端网络。释放所有这些需要花费大量时间来完成应用程序,因此我正在寻找一种方法来加快速度。

我只知道一种方法——设置优先级。所以每个线程的优先级=普通。我应该如何将主线程的优先级设置为尽可能高的级别,以便更快地释放所有其他线程?

multithreading delphi
3个回答
8
投票

我想说,您需要查看线程正在做什么,并要求它们并行执行。在我的服务应用程序中,可以有数百个线程(有些带有子线程),我在关闭时有一个有效的循环:

for I := 0 to ThreadCount - 1 do
    Threads[I].Terminate;
for I := 0 to ThreadCount - 1 do
    Threads[I].WaitFor;
for I := 0 to ThreadCount - 1 do
    Threads[I].Free;

线程在终止时会及时关闭自己,但是通过要求所有线程先关闭,然后等待它们,一切都可以发生得更快。当然,如果第一个线程是最后一个关闭的,那么中间的循环将会非常快,因为它总是只需要最慢的线程关闭即可。

如果这对您的问题没有帮助,那么我认为我们需要查看您的代码。


7
投票

改变主线程优先级的方法是调用

SetThreadPriority
。对于手柄,只需使用
GetCurrentThread
— 您不需要打开真正的手柄。

这可能不会对你试图解决的问题产生任何影响,但你没有问如何解决你的问题;您问如何调整线程优先级。如果你想知道如何让你的线程更快地被释放,那么下次,问问这个问题。


0
投票
#include <windows.h>
#include <processthreadsapi.h>

SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_HIGHEST);
© www.soinside.com 2019 - 2024. All rights reserved.