带订单的线程优先级(1,2,3,... n)

时间:2014-01-27 04:36:03

标签: c# .net multithreading

在.NET框架中,我知道可以为线程分配以下任何一个优先级值:

Highest
AboveNormal
Normal
BelowNormal
Lowest

但是,如果2个线程具有相同的优先级,我希望它们以类似的顺序开始 1,2,3,...,N。数字越大,启动顺序越低。

有什么建议吗? 例如:

new Thread(() => OrderFactory.Match(GetOrders()[1]), order: 3).Start();
new Thread(() => OrderFactory.Match(GetOrders()[2]), order: 2).Start(); => start second
new Thread(() => OrderFactory.Match(GetOrders()[3]), order: 4).Start();
new Thread(() => OrderFactory.Match(GetOrders()[4]), order: 5).Start();
new Thread(() => OrderFactory.Match(GetOrders()[5]), order: 1).Start(); => start first

我知道那里有很多话题,但不知怎的,我找不到合适的话题......

1 个答案:

答案 0 :(得分:2)

AFAIK没有机制可以控制Thread的启动,但值得问你为什么要这样做,

  

我希望他们以1,2,3 ...... n的顺序开始。数字越多,启动顺序越低

因为当您不关心按特定顺序发生的事情时使用Thread

您是否希望特定部分同步?

在分配优先级后,当Windows执行特定线程时,它不能保证,Windows只会决定序列。
如果你真的想要,那1在2之前开始,然后按顺序Start并且稍微暂停b / w线程开始或让线程1开始线程2 .......