Bagikan melalui


Paralelisme Data (Pustaka Paralel Tugas)

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

Pustaka Paralel Tugas (TPL) mendukung paralelisme data melalui kelas System.Threading.Tasks.Parallel. Kelas ini menyediakan implementasi paralel berbasis metode dari perulangan for dan foreach (For dan For Each dalam Visual Basic). Anda menulis logika perulangan untuk perulangan Parallel.For atau Parallel.ForEach sebanyak yang akan Anda tulis untuk perulangan berurutan. Anda tidak perlu membuat rangkaian atau item kerja 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 paralel setaranya.

Catatan

Dokumentasi ini menggunakan ekspresi lambda untuk menentukan delegasi di 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))

Saat perulangan paralel berjalan, TPL mempartisi sumber data sehingga perulangan dapat beroperasi pada beberapa bagian secara bersamaan. Di belakang layar, Task Scheduler mempartisi tugas berdasarkan sumber daya sistem dan beban kerja. Jika memungkinkan, scheduler mendistribusikan kembali pekerjaan antara beberapa rangkaian dan prosesor jika beban kerja menjadi tidak seimbang.

Catatan

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

Metode Parallel.For dan Parallel.ForEach memiliki beberapa kelebihan beban yang memungkinkan Anda menghentikan atau memutuskan eksekusi perulangan, memantau status perulangan pada rangkaian lain, mempertahankan status rangkaian lokal, menyelesaikan objek rangkaian lokal, mengontrol tingkat konkurensi, dan sebagainya. Jenis bantuan yang mengaktifkan fungsi ini meliputi ParallelLoopState, ParallelOptions, ParallelLoopResult, CancellationToken, 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 Perulangan Paralel.For Sederhana Menjelaskan cara menulis perulangan For atas array atau koleksi sumber IEnumerable<T> yang dapat diindeks.
Cara: Menulis Perulangan Paralel.ForEach Sederhana Menjelaskan cara menulis perulangan ForEach di atas koleksi sumber IEnumerable<T> apa pun.
Cara: Menghentikan atau Memisahkan Perulangan Paralel.For Menjelaskan cara menghentikan atau melepaskan dari perulangan paralel sehingga semua rangkaian diberi tahu tentang tindakan tersebut.
Cara: Menulis Perulangan Paralel.For dengan Variabel Rangkaian Lokal Menjelaskan cara menulis perulangan For saat setiap rangkaian mempertahankan variabel privat yang tidak terlihat oleh rangkaian lain, dan cara menyinkronkan hasil dari semua rangkaian saat perulangan selesai.
Cara: Menulis Perulangan Parallel.ForEach dengan Variabel Partisi Lokal Menjelaskan cara menulis perulangan ForEach saat setiap rangkaian mempertahankan variabel privat yang tidak terlihat oleh rangkaian lain, dan cara menyinkronkan hasil dari semua rangkaian saat perulangan selesai.
Cara: Membatalkan Perulangan Paralel.For atau ForEach Menjelaskan cara membatalkan perulangan paralel dengan menggunakan System.Threading.CancellationToken
Cara: Mempercepat Isi Perulangan Kecil Menjelaskan salah satu cara mempercepat eksekusi saat isi perulangan sangat kecil.
Pustaka Paralel Tugas (TPL) Menyediakan ringkasan Pustaka Paralel Tugas.
Pemrograman Paralel Memperkenalkan Pemrograman Paralel di .NET Framework.

Lihat juga