Saya memiliki persyaratan untuk membuat proses yang terukur. Proses ini sebagian besar memiliki operasi I/O dengan beberapa operasi CPU kecil (terutama deserialisasi string). Proses menanyakan database untuk daftar url, kemudian mengambil data dari url ini, membatalkan serialisasi data yang diunduh ke objek, kemudian menyimpan beberapa data ke dalam dinamika crm dan juga ke database lain. Setelah itu saya perlu memperbarui database pertama yang urlnya diproses. Salah satu persyaratannya adalah membuat derajat paralelisme dapat dikonfigurasi.
Awalnya saya berpikir untuk mengimplementasikannya melalui serangkaian tugas dengan menunggu dan membatasi paralelisme menggunakan Semaphore - cukup sederhana. Kemudian saya membaca beberapa postingan dan jawaban di sini dari @Stephen Cleary yang merekomendasikan penggunaan TPL Dataflow dan menurut saya ini bisa menjadi kandidat yang baik. Namun saya ingin memastikan bahwa saya "memperumit" kode dengan menggunakan Dataflow untuk tujuan yang baik. Saya juga mendapat saran untuk menggunakan Metode ekstensi ForEachAsync yang juga mudah digunakan, namun saya tidak yakin apakah ini tidak akan menyebabkan overhead memori karena caranya mempartisi koleksi.
Apakah TPL Dataflow merupakan pilihan yang baik untuk skenario seperti itu? Apa yang lebih baik daripada metode Semaphore atau ForEachAsync - manfaat apa yang sebenarnya akan saya peroleh jika saya menerapkannya melalui TPL DataFlow pada setiap opsi lainnya (Semaphore/ForEachASync)?
ActionBlock
denganMaxDegreeOfParallelism
sebagai dapat dikonfigurasi. Dari apa yang saya pahami, TPL mengelola threadpool untuk Anda dengan cara yang efisien, tetapi ada beberapa masalah lainnya. Saya ingin membuatnya sederhana, cukup batasi jumlah tugas yang dijalankan dalam satu waktu, apakah itu yang Anda lakukan juga? - person Polynomial Proton   schedule 31.07.2018TPL Dataflow is great, especially if you're looking to limit work in one part of a larger pipeline
Namun, jika hanya ada satu tindakan untuk membatasi maka semaphore sudah cukup. - person Polynomial Proton   schedule 31.07.2018