2013-01-08 20 views
8

Ben değişken tasksupport alan (Bakınız: https://stackoverflow.com/a/5425354/82970) üzerinden, tek bir paralel toplama paralellik düzeyini ayarlamak için nasıl anlıyoruz.Scala 2.10 tüm koleksiyonları için paralellik düzeyini ayarlama?

Scala 2.10'daki tüm yeni paralel koleksiyonlar için paralellik düzeyini nasıl ayarlayabilirim?

bir yan soru --- bunun dışında yerleşik yeni paralel koleksiyonları ile paralel bir koleksiyon 'miras' olarak ilişkili tasksupport mı? (Örn take, map, vb)

cevap

9
  1. Ben kaynaklar kısaca baktım ve doğru şeyleri anlamak eğer gibi görünüyor varsayılan yürütme içeriği, yapılandırmak için kullanılabilecek üç sistem özellikleri vardır varsayılan görev desteği olarak kullanılır. Bunlar görev desteği nesnenin paralellik düzeyini belirlemek.

    • scala.concurrent.context.minThreads: Int, asgari paralellik seviyesi
    • scala.concurrent.context.numThreads: ya bir Int, doğrudan kullanmak paralellik düzeyini belirtin veya bir dize: Bir çift tarafından izlenen bir "x" (örneğin "x1.5"), sonra Runtime.getRuntime.availableProcessors
    • scala.concurrent.context.maxThreads ile çarpıldığı: Int, maksimum paralellik seviyesini

    ilgili kaynak dosyası (her şeyi doğru takip varsa) ExecutionContextImpl gibi görünüyor. Sorunuzun ikinci kısmına gelince

  2. :
    dönüştürme işlemleri map gibi filter vb menşeli koleksiyonu ayarlanmış görev desteği korumalıdır. En azından kaynaklar öyle görünüyor. :)
    Çoğu paralel işlem ParIterableLike olarak tanımlanmıştır ve(Combiner numaralı telefondan) (bunlar, 561 veya 581 numaralı satırlarda fabrika tarafından başlatılan başlangıç ​​görevi desteği alır ve ParIterableLike'da) görev desteğini doğrudan elde edilen koleksiyona ayarlar.

+0

sayesinde, bu gerçekten iyi belgelenmiş değildir ve ben benzediğini yaptık hızlı bir testte bu değişken 'tasksupport' özelliğini :( –

+1

nefret Scala 2.11.8' map' itibariyle ' paralel koleksiyonları üzerinde filter' vb işlemler Ben sıra dışı gelebilir itiraf 'böylece tasksupport' ve paralellik düzeyini korumak değil, bu aşmanın küresel görev desteği ayarlamak isteyeceksiniz – Bogdan

+0

-. http://stackoverflow.com/ sorular/17865823/nasıl-do-i-set-default-sayı-of-iş parçacığı-için-scala-2-10-paralel-koleksiyonları – mut1na

İlgili konular