【文件属性】:
文件名称:指定希望的并行度-基于javascript实现报警器提示音效果
文件大小:56.6MB
文件格式:PDF
更新时间:2021-07-09 18:10:54
VB2010 高级编程 文字版
33.4 指定希望的并行度
TPL方法总是尝试使用所有可用的逻辑核心,达到最佳敢果e 但有时不希望在并行循环中使用
所有可用的核心,因为有特殊的需要,给剩余的可用核心制订了更好的计划,或者希望让一个核心
空闲着,以创建响应快的应用手自芋, 让其余核心并行运行代码的另一部分。在这些情况下,就需要
为并行循环指定最大井行度。
33.4.1 ParallelOptions
TPL 允许创建新ParaUelOptions类的实例,改变其M皿DegreeOfP缸allelism 属性的值,以指定不
同的最大并行度。 Listingl2 中的代码段显示了两个使用 ParaUeLFor 的子例程的新版本 ParaUelGenerate
AESKeysMaxDegree 和 ParallelGenerateMD5HasbesMaxDegr隅。
现在,它们接收一个 lnteger. 表示希望的最大并行度。每个子例程都创建了 ParaUelOptions 的
一个本地实例, 并把接收到的参数值赋予其 M皿Degr时Otparallelism 属性,这是每个并行循环的一
个版数,放在强环件之前。 i捕,循环阳之会优化为利用所有可用的核,已制aXDegr回)fParallelism= -1).
而是伽T用的核心总数等于该属性中指定的最大并行度:
Dim pa~allelOptions As New ParallelOptions()
parallelOptions.MaxOegreeOfParallelism ; maxOegree
Listing12 中的如下代码段给 ParalIel.For 循环指定了希望的最大并行度,如下所示:
~
可从
wro,‘ com
下我派代码
1086
Sub ParallelGenerateAESKeysMaxOegree(ByVal maxDegree As Integer)
Dim parallelOptions As New ParùlelOptions ()
parallelOptions.MaxDeqreeOfParallelism = maxDeqree
O.im sw ~ Stopwatch . Stal:tNew()
Parallel . For(1 , NUM_.l\ES_I!tE'lS ... 1 , para11elOptions ,
Sub (i As Inteqer)
Dim rèsult() As Byte
Dim hexString As String
Oim aesM As New AesManaged()
aesM .GenerateKey ()
result ; aesM.Key
hexString = ConvertToRexString(result)
, Console. Wri teLine (" AES : "+hexStr.iog )
End Sub)
Debug.WriteLine("AES: " + sw . Elapsed.ToString())
End Sub
Sub ParallelGenerateMD5HashesMaxDegree(ByVal maxDegree As rnteger)
Dim parallelOptions As New Paralle10ptiona
paralle10ptions .MaxDegreeOfParal1e1ism = maxDegree
Dim sw ; Stopwatch.StartNew()
Para11e1 . For (1 , NUM _ MD5 _ HASHES + 1 , para11e1Options ,
Sub(i As Inteqer)
Dim md5M As MD5 = MD5.Create()
Dim result() As Byte
Dim data() As Byte