文件名称:指定希望的并行度-基于javascript实现报警器提示音效果
文件大小:56.6MB
文件格式:PDF
更新时间:2024-07-29 11:57:34
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