概述
2)通过System.Diagnostics.ProcessThread来设置优先级,它能设置比第1种方法更多的优先级
Idle 指定空闲优先级。 它是所有线程的可能的最低优先级值,与关联的 ProcessPriorityClass 的值无关。
Lowest 指定最低优先级。 这比关联的 ProcessPriorityClass 的普通优先级低两级。
BelowNormal 指定的优先级比关联的 ProcessPriorityClass 的普通优先级低一级。
Normal 指定关联的 ProcessPriorityClass 的普通优先级。
AboveNormal 指定的优先级比关联的 ProcessPriorityClass 的普通优先级高一级。
Highest 指定最高优先级。 这比关联的 ProcessPriorityClass 的普通优先级高两级。
TimeCritical 指定时间关键优先级。 这是所有线程中的最高优先级,与关联的 ProcessPriorityClass 的值无关
部分代码
Dim myprocess As Process = Process.GetCurrentProcess()
Dim value As ProcessThreadCollection
Dim pt As ProcessThread
value = myprocess.Threads
For Each pt In value
pt.PriorityLevel = ThreadPriorityLevel.AboveNormal
Next
此外,还可以设置线程动态优先级调整的开关
ProcessThread.PriorityBoostEnabled
当 PriorityBoostEnabled 为 true 时,只要关联的进程离开等待状态,系统便暂时提升该线程的优先级。 此操作可防止其他进程中断当前线程的处理。 PriorityBoostEnabled 设置影响所有现有线程及该进程随后创建的所有线程。 若要还原正常行为,请将 PriorityBoostEnabled 属性设置为 false。
仅当线程运行在一个将 PriorityClass 设置为动态优先级枚举值之一(Normal、High 或 RealTime)时,PriorityBoostEnabled 才有效。
4、睡眠与阻塞
Imports System.Threading
Class Example
Shared Sub Main()
For i As Integer = 0 To 4
Console.WriteLine("Sleep for 2 seconds.")
Thread.Sleep(2000)
Next
Console.WriteLine("Main thread exits.")
End Sub
End Class
Imports System.Threading
Class Example
Shared Sub Main()
Dim interval As New TimeSpan(0, 0, 2)
For i As Integer = 0 To 4
Console.WriteLine("Sleep for 2 seconds.")
Thread.Sleep(interval)
Next
Console.WriteLine("Main thread exits.")
End Sub
End Class
mythread1.Start(myprocess)
mythread2.Start(myprocess)
mythread3.Start(myprocess)
mythread1.Suspend()
mythread2.Suspend()
mythread3.Suspend()
mythread1.Resume()
mythread2.Resume()
mythread3.Resume()
最后
以上就是开心黑夜为你收集整理的VB.NET并行与分布式编程(5)-线程状态与调整[4]的全部内容,希望文章能够帮你解决VB.NET并行与分布式编程(5)-线程状态与调整[4]所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复