我瞭解如何通過可變的tasksupport
字段(c.f. https://stackoverflow.com/a/5425354/82970)爲單個並行集合設置並行性級別。爲Scala 2.10中的所有集合設置並行性級別?
如何在Scala 2.10中爲所有新並行集合設置並行性級別?
一個附屬問題---是tasksupport
與並行集合相關聯的「並行集合」由它構建的新並行集合? (例如,用take
,map
等)
我瞭解如何通過可變的tasksupport
字段(c.f. https://stackoverflow.com/a/5425354/82970)爲單個並行集合設置並行性級別。爲Scala 2.10中的所有集合設置並行性級別?
如何在Scala 2.10中爲所有新並行集合設置並行性級別?
一個附屬問題---是tasksupport
與並行集合相關聯的「並行集合」由它構建的新並行集合? (例如,用take
,map
等)
我看着來源短暫,如果我理解正確的事情,有一些可以用來配置默認的執行上下文,這似乎是三個系統屬性用作默認任務支持。這些決定了任務支持對象的並行性級別。
scala.concurrent.context.minThreads
:中等,最小並行水平scala.concurrent.context.numThreads
:要麼一個Int,以指定並行水平直接使用,或一字符串:「x」的後面是雙(如「X1.5」 ),然後用Runtime.getRuntime.availableProcessors
scala.concurrent.context.maxThreads
乘以:詮釋,最大並行水平相關的源文件(如果我正確地遵循一切)似乎是ExecutionContextImpl。
關於你問題的第二部分:
轉變操作,比如map
,filter
等應保持已設置的原始採集任務的支持。至少消息來源是這樣看的。 :)
大多數並行操作在ParIterableLike中定義,它們要麼在Combiner中調用resultWithTaskSupport
(它通過工廠在ParIterableLike的第568行或第581行得到始發任務支持集),或直接在結果集上設置任務支持。
感謝,這實在不是有據可查的,我恨這個可變'tasksupport'財產:( –
在快速測試,我已經做了,它看起來像斯卡拉爲2.11.8的'map'的,'過濾器「等操作並行集合不保留'tasksupport'並因此並行水平,我承認這是違反直覺的。 – Bogdan
您將要設置全局任務支持以解決此問題 - http://stackoverflow.com/問題/ 17865823 /如何-DO-I-設置的默認用戶號碼的線程換斯卡拉-2-10平行的集合 – mut1na