SORU
28 EKİM 2011, Cuma


Nasıl çatal/çerçeve, bir iş parçacığı havuzu Daha katılacak mı?

Faydaları nelerdir kullanarak yeni fork/join framework üzerinde sadece bölme büyük görev N görevleri başında, onları göndermek için önbelleğe alınan bir iş parçacığı havuzu (Executors) ve beklemek için her görevi tamamlamak için? Soyutlama katılmak/çatal kullanarak sorunu basitleştirir nasıl görmek için başarısız, yoksa çözümün bir yıldır neler yaşadık daha verimli hale getirir.

Örneğin, tutorial example parallelized bulanık algoritma bu şekilde uygulanabilir:

public class Blur implements Runnable {
    private int[] mSource;
    private int mStart;
    private int mLength;
    private int[] mDestination;

    private int mBlurWidth = 15; // Processing window size, should be odd.

    public ForkBlur(int[] src, int start, int length, int[] dst) {
        mSource = src;
        mStart = start;
        mLength = length;
        mDestination = dst;
    }

    public void run() {
        computeDirectly();
    }

    protected void computeDirectly() {
        // As in the example, omitted for brevity
    }
}

Başlangıçta bölünmüş ve bir iş parçacığı havuzu için görevler gönderin:

// source image pixels are in src
// destination image pixels are in dst
// threadPool is a (cached) thread pool

int maxSize = 100000; // analogous to F-J's "sThreshold"
List<Future> futures = new ArrayList<Future>();

// Send stuff to thread pool:
for (int i = 0; i < src.length; i = maxSize) {
    int size = Math.min(maxSize, src.length - i);
    ForkBlur task = new ForkBlur(src, i, size, dst);
    Future f = threadPool.submit(task);
    futures.add(f);
}

// Wait for all sent tasks to complete:
for (Future future : futures) {
    future.get();
}

// Done!

Görevleri hangi çalışan iş parçacığı olarak idam edilmeden iş parçacığı havuzu sıra, gidin. Sürece bölme parçalı yeterli (önlemek olması için özellikle beklemek için son görev) ve iş parçacığı havuzu yeterli (en az N işlemci) iş parçacığı, tüm işlemciler çalışmaya tam hız kadar bütün hesaplama yapılır.

Bir şey mi kaçırdım? Çatal/kullanarak katma değeri çerçeve birleştirme nedir?

CEVAP
28 EKİM 2011, Cuma


Fork/Join örnekleri yapmak temel bir yanlış anlama olduğunu düşünüyorumDEĞİLiş gösterhırsızlıkama sadece standart böl ve fethet.

İş böyle olacağını çalmak: İşçi B işini bitirdi. Bir tür biridir, etrafa bakar ve Bir Çalışan olarak görüyor hala çok sıkı çalışıyor. Üzerinde cirit atıyor ve soruyor: "Hey evlat, sana yardım edebilirim." Bir yanıt verir. "Serin, 1000 adet görev var. Şimdiye kadar 345 655 bırakarak bitirdim. Numarası 1000, 672." 346 yapacağım için 673 misiniz B "TAMAM, hadi bara daha önce de biz gidelim artık başlayalım." diyor

- İşçilerin gerçek çalışmaya başladılar bile birbirleriyle iletişim kurması gerekir. Bu örneklerde eksik parçasıdır.

Öte yandan bu örnekler, sadece gibi bir şey göstereceğim "": . kullanın taşeron

Bir işçi: "Dang, eserin 1000 adet var. Benim için çok fazla. 500 kendim ve başkası için 500 taşeron edeceğim." Bu büyük görev 10 adet her küçük paketler halinde bozuldu kadar devam ediyor. Bu mevcut işçiler tarafından yürütülür. Ama bir paket zehir hapı bir tür ve çok daha uzun diğer paketlerden daha kötü şans alırsa, bölmek aşaması bitti.

Ve görev ayarlıyoruz Katılmak bölme/Çatal arasında kalan tek fark şu: ne Zaman bölme işi baştan tam doğru sırası var peşin. Örnek: eşik 10, çok sıra var 100 adet 1000 adet,. Bu paketler havuzu üyelerine dağıtılır.

Katılmak/çatal daha karmaşık ve sıra paket sayısı daha küçük tutmaya çalışır:

  • 1. Adım: sıra . içine bir paket içeren (1...1000)
  • Adım 2: Bir alt paket(1...1000) pops ve iki paket koyar: (1...500) (501...1000).
  • Adım 3: Bir işçinin paket (500...1000) ve iter (500...750 ve 751...1000) babalık.
  • Adım n: yığını bu paketler içerir: (1..500), (500...750), (750...875)... (991..1000)
  • N Adım 1: Paket (991..1000) attı ve yürütülür
  • N adım 2: Paket (981..990) attı ve idam edildi
  • N adım 3: Paket (961..980) attı ve (961...970) ve (971..980) bölünmüş. ....

Bkz: Çatal/Birleştirmek sıra daha küçük (bu örnekte 6) ve "" ve "iş" aşamaları aralanmış. böl

Birden fazla işçi aynı anda haşhaş iterek olduğunda etkileşimleri elbette o kadar net değil.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fullscreen

    Fullscreen

    23 Mart 2006
  • Apple&Tech Reviews & Giveaways

    Apple&Tech R

    12 Temmuz 2008
  • tunez4you

    tunez4you

    20 EKİM 2008