`
deepfuture
  • 浏览: 4321324 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:79303
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:68103
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:101192
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:280262
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:14535
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:65153
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:31187
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45069
社区版块
存档分类
最新评论

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()
  

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics