Bagikan melalui


Paralelisme Data (Pustaka Tugas Paralel)

Paralelisme data mengacu pada skenario di mana operasi yang sama dilakukan secara bersamaan (yaitu, secara paralel) pada elemen dalam kumpulan sumber atau array. Dalam operasi paralel data, kumpulan sumber dipartisi sehingga beberapa utas dapat beroperasi pada segmen yang berbeda secara bersamaan.

Pustaka Paralel Tugas (TPL) mendukung paralelisme data melalui System.Threading.Tasks.Parallel kelas . Kelas ini menyediakan implementasi paralel berbasis metode untuk perulangan for dan foreach (For dan For Each dalam Visual Basic). Anda menulis logika perulangan untuk perulangan Parallel.For atau Parallel.ForEach dengan cara yang sama seperti Anda menulis perulangan berurutan. Anda tidak perlu membuat benang atau item pekerjaan dalam antrean. Dalam perulangan dasar, Anda tidak perlu mengambil kunci. TPL menangani semua pekerjaan tingkat rendah untuk Anda. Untuk informasi mendalam tentang penggunaan Parallel.For dan Parallel.ForEach, unduh dokumen Pola untuk Pemrograman Paralel: Memahami dan Menerapkan Pola Paralel dengan .NET Framework 4. Contoh kode berikut menunjukkan perulangan sederhana foreach dan setara paralelnya.

Nota

Dokumentasi ini menggunakan ekspresi lambda untuk menentukan delegasi dalam TPL. Jika Anda tidak terbiasa dengan ekspresi lambda di C# atau Visual Basic, lihat Ekspresi Lambda di PLINQ dan TPL.

// Sequential version
foreach (var item in sourceCollection)
{
    Process(item);
}

// Parallel equivalent
Parallel.ForEach(sourceCollection, item => Process(item));
' Sequential version        
For Each item In sourceCollection
    Process(item)
Next

' Parallel equivalent
Parallel.ForEach(sourceCollection, Sub(item) Process(item))

Ketika perulangan paralel berjalan, TPL mempartisi sumber data sehingga perulangan dapat beroperasi pada beberapa bagian secara bersamaan. Di balik layar, Task Scheduler mempartisi tugas berdasarkan sumber daya sistem dan beban kerja. Jika memungkinkan, penjadwal mendistribusikan ulang pekerjaan di antara beberapa utas dan prosesor jika beban kerja menjadi tidak seimbang.

Nota

Anda juga dapat menyediakan partisi atau penjadwal kustom Anda sendiri. Untuk informasi selengkapnya, lihat Partisi Kustom untuk PLINQ dan TPL dan Penjadwal Tugas.

Kedua metode, yaitu Parallel.For dan Parallel.ForEach, memiliki beberapa overload yang memungkinkan Anda menghentikan atau membatalkan eksekusi perulangan, memantau status perulangan pada thread lain, mempertahankan status khusus utas, menyelesaikan objek khusus utas, mengontrol tingkat konkurensi, dan seterusnya. Jenis pembantu yang mengaktifkan fungsionalitas ini meliputi ParallelLoopState, , ParallelOptions, ParallelLoopResultCancellationToken, dan CancellationTokenSource.

Untuk informasi selengkapnya, lihat Pola untuk Pemrograman Paralel: Memahami dan Menerapkan Pola Paralel dengan .NET Framework 4.

Paralelisme data dengan sintaks deklaratif, atau seperti kueri, didukung oleh PLINQ. Untuk informasi selengkapnya, lihat LINQ Paralel (PLINQ).

Judul Deskripsi
Cara: Menulis Paralel Sederhana.Untuk Perulangan Menjelaskan cara menulis perulangan For di atas array atau koleksi sumber yang dapat diindeks IEnumerable<T> .
Cara: Menulis Perulangan Paralel Sederhana.ForEach Menjelaskan cara menulis loop ForEach melalui koleksi sumber IEnumerable<T> apa pun.
Cara: Menghentikan atau Memutus dari Loop Parallel.For Menjelaskan cara menghentikan atau keluar dari perulangan paralel sehingga semua utas diberi informasi tentang tindakan tersebut.
Cara Menulis Loop Paralel.For dengan Variabel Thread-Local Menjelaskan cara menulis perulangan For di mana setiap utas mempertahankan variabel privat yang tidak terlihat oleh utas lain, dan cara menyinkronkan hasil dari semua utas ketika perulangan selesai.
Panduan Menulis Loop Parallel.ForEach dengan Variabel Partition-Local Menjelaskan cara menulis perulangan ForEach di mana setiap utas mempertahankan variabel privat yang tidak terlihat oleh utas lain, dan cara menyinkronkan hasil dari semua utas ketika perulangan selesai.
Cara Membatalkan Loop Paralel.For atau ForEach Menjelaskan cara membatalkan perulangan paralel dengan menggunakan System.Threading.CancellationToken
Cara: Mempercepat Bagian Iterasi Kecil Menjelaskan salah satu cara untuk mempercepat eksekusi ketika tubuh perulangan sangat kecil.
Pustaka Paralelisasi Tugas (TPL) Menyediakan gambaran umum Pustaka Paralel Tugas.
Pemrograman Paralel Memperkenalkan Pemrograman Paralel di .NET Framework.

Lihat juga