Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 顺序为(1,2,3,…n)的线程优先级_C#_.net_Multithreading - Fatal编程技术网

C# 顺序为(1,2,3,…n)的线程优先级

C# 顺序为(1,2,3,…n)的线程优先级,c#,.net,multithreading,C#,.net,Multithreading,在.NET framework中,我知道可以为线程分配以下任一优先级值: Highest AboveNormal Normal BelowNormal Lowest 但是如果两个线程具有相同的优先级,并且我希望它们按照如下顺序启动呢 1,2,3…n。数量越大,启动顺序越低 有什么建议吗? 例如: new Thread(() => OrderFactory.Match(GetOrders()[1]), order: 3).Start(); new Thread(() => Order

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

Highest
AboveNormal
Normal
BelowNormal
Lowest
但是如果两个线程具有相同的优先级,并且我希望它们按照如下顺序启动呢 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

我知道有很多话题,但不知何故,我找不到合适的话题…

AFAIK没有任何机制可以控制
线程的启动,但值得一问的是,为什么要这样做

我希望它们以1,2,3…n的顺序开始。数量越大,启动顺序越低

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

您是否希望特定部分同步

在分配了优先级之后,也不能保证windows将执行特定线程,windows将只决定顺序。

如果你真的想,1在2之前启动,那么要么
按顺序启动
它们,并稍微暂停线程的启动,要么让线程1启动线程2……

多线程是一个复杂的概念。我建议您在开始混搭代码之前先了解一些相关问题的信息——这本免费电子书是一个很好的开端:当您不了解不再在一个线程中运行代码时,哪些保证会被破坏时,很容易得到意想不到的结果。其中一个被破坏的保证是执行顺序,您刚刚发现:)并且不要打乱线程/进程优先级。这不是你想的。我只想说你的评论真的很有帮助。谢谢:)谢谢,我明白:)我会计算更多,稍后更新这里的信息。