VB.NET并行与分布式编程(5)-线程状态与调整[4]

 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、睡眠与阻塞

Sleep(Int32)将当前线程挂起指定的时间。
注意参数为 线程被阻塞的毫秒数
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

 
Sleep(TimeSpan)将当前线程阻塞指定的时间。
 
下面是关于msdn的阻塞的例子
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

 
5、挂起与恢复
        mythread1.Start(myprocess)
        mythread2.Start(myprocess)
        mythread3.Start(myprocess)
        mythread1.Suspend()
        mythread2.Suspend()
        mythread3.Suspend()

        mythread1.Resume()
        mythread2.Resume()
        mythread3.Resume()
  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值