C# 顺序为(1,2,3,…n)的线程优先级
在.NET framework中,我知道可以为线程分配以下任一优先级值: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
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……多线程是一个复杂的概念。我建议您在开始混搭代码之前先了解一些相关问题的信息——这本免费电子书是一个很好的开端:当您不了解不再在一个线程中运行代码时,哪些保证会被破坏时,很容易得到意想不到的结果。其中一个被破坏的保证是执行顺序,您刚刚发现:)并且不要打乱线程/进程优先级。这不是你想的。我只想说你的评论真的很有帮助。谢谢:)谢谢,我明白:)我会计算更多,稍后更新这里的信息。