我有一个运行44 * 3 = 132个线程+主线程的应用程序,每3个线程代表一个tcp客户端网络。释放所有这些需要花费大量时间进行应用程序最终确定,因此我正在寻找一种方法来加快速度。
我只知道一种方式 - 设置优先级。所以每个线程的优先级都是正常的。我应该如何将主线程的优先级设置为最高级别,以便更快地释放所有其他线程?
答案 0 :(得分: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;
线程在被终止时及时关闭自己,但是通过要求所有线程先关闭然后等待它们,它们都可以更快地发生。当然,如果第一个线程是最后一个关闭,那么中间循环将非常快,因为它总是只需要最慢的线程关闭。
如果您的问题没有得到帮助,那么我们需要查看您的代码。
答案 1 :(得分:6)
更改主线程优先级的方法是在其上调用SetThreadPriority
。对于句柄,只需使用GetCurrentThread
- 您无需打开真正的句柄。
这可能对你试图解决的问题没有任何影响,但你没有问如何解决你的问题;你问过如何调整线程优先级。如果你想知道如何让你的线程更快地被释放,那么下次再询问一下。