以特定顺序运行八个线程,直到终止

Running eight threads in a particular order until termination

本文关键字:线程 八个 终止 定顺序 运行      更新时间:2023-10-16

我有一个Core 2 Duo处理器。

我想创建并运行八个线程(它们之间没有共享数据),以至于在任何给定时间中,所有八个线程都将运行一次,而线程1和线程2将同时运行,如果线程1和线程1和线程2不能由我希望优先级的处理器同时运行到线程1,以便线程1将在线程2之前运行。

类似地,线程3和4可以同时运行,但是如果线程3和线程4不能同时运行,我希望线程3在螺纹4之前执行,而不是在线程1和2之前执行,而不是在线程5和6和6线程7和线程8.

对于线程5和线程6,线程7和线程8的相同。

所有8个线程都完成了任务后,8个线程将在上述顺序中一次又一次运行,直到终止。

如何使用Windows 7上的C 和Visual Studio 2008实现此目标?

是否可以使用C ?

实现此功能

好吧,在很多争吵中真正从您那里提出问题之后,这是我要回答的版本:

创建线程后,不能保证任何两个线程将同时在双核处理器上运行。因此,如果两个线程不同时运行,我希望优先级,以使线程1(创建的第一)将首先运行,而线程2(创建第二个)将始终在线程1之后运行。

>

幸运的是,的答案相当简单。您的程序不知道在运行哪些线程时。操作系统何时启动并停止线程,因此您无法编码任何形式的"线程1运行?

,但是您可以将线程设置为具有不同的优先级。这表明OS应该安排哪些执行。给您的线程逐渐减少优先级(因此,线程1具有很高的优先级,螺纹较低2较低一步,依此类推),您将做一些可以近似所需的东西的东西。在Windows上,这实际上可能会很好地奏效,因为Windows总是试图选择可用的最高优先级线程/过程。Linux将尝试确保所有线程都能获得一些

执行时间,但只会将更多更多给予更高的优先级。

当然,处理此类优先级也会影响您的程序与PC上运行的其他所有内容有关的计划。您确实想以错误的方式解决这个问题,而卫生解决方案就是简单地找到另一种并行化的方案。

我认为您不能控制线程的执行顺序。创建线程后,将为您完成计划。您所能做的就是等待线程在您的父线程中完成。

什么?您要使用Run线程1,然后使用线程2 ...

不要使用线程。使用一段循环并致电:

While(1)
{
   foo1();
   foo2();
   foo3();
   .
   .
   .
}