Parallel ForEach async เป็นแบบขนานหรือไม่
Parallel ForEach async เป็นแบบขนานหรือไม่

วีดีโอ: Parallel ForEach async เป็นแบบขนานหรือไม่

วีดีโอ: Parallel ForEach async เป็นแบบขนานหรือไม่
วีดีโอ: Asynchronous Loops | C# Asynchronous Loops Using Parallel Class Complete Guide 2024, อาจ
Anonim

เบื้องหลังความคิดทั้งหมด ขนาน . แต่ละ () คือคุณมีชุดของเธรดและแต่ละเธรดประมวลผลส่วนหนึ่งของคอลเล็กชัน อย่างที่คุณสังเกตเห็น วิธีนี้ใช้ไม่ได้กับ async - await ที่คุณต้องการปล่อยเธรดในช่วงระยะเวลาของ async เรียก. แต่ละ () ซึ่งรองรับ อะซิงโครนัส งานได้เป็นอย่างดี

เกี่ยวกับเรื่องนี้ คุณจะรอให้ Parallel foreach เสร็จได้อย่างไร?

ไม่ต้องทำอะไรเป็นพิเศษ ขนาน . แต่ละ () จะ รอ จนกระทั่งงานแตกแขนงออกมาทั้งหมด เสร็จสิ้น . จากเธรดการเรียก คุณสามารถถือว่ามันเป็นคำสั่งซิงโครนัสเดียว และตัวอย่างเช่น ห่อภายใน try/catch คุณไม่ต้องการสิ่งนั้นด้วย ขนาน.

ในทำนองเดียวกัน foreach เป็นแบบอะซิงโครนัสหรือไม่? มันไม่ใช่ อะซิงโครนัส . มันกำลังปิดกั้น ผู้ที่เรียนรู้ภาษาเช่น Java, C หรือ Python เป็นครั้งแรกก่อนที่จะลองใช้ JS จะสับสนเมื่อพยายามทำให้ล่าช้าโดยพลการหรือการเรียก API ในเนื้อหาลูป

นอกจากนี้ คุณจะทำต่อใน foreach แบบคู่ขนานได้อย่างไร?

เมื่อคุณแปลงลูปของคุณเป็นคำจำกัดความที่เข้ากันได้สำหรับ ขนาน . แต่ละ ตรรกะ คุณลงเอยด้วยการทำให้เนื้อความของคำสั่งเป็นแลมบ์ดา นั่นคือการกระทำที่เรียกโดย ขนาน การทำงาน. ดังนั้นแทนที่ ดำเนินต่อ ด้วย return และ break ด้วยคำสั่ง Stop() หรือ Break()

งาน WhenAll ขนานกันหรือไม่

การประยุกต์ใช้ เมื่อทั้งหมด ส่งคืนเดียว งาน ที่ยังไม่ครบจนกว่าทุก งาน ในคอลเลกชันเสร็จสมบูรณ์ NS งาน ดูเหมือนจะวิ่งเข้า ขนาน แต่ไม่มีการสร้างเธรดเพิ่มเติม NS งาน สามารถดำเนินการในลำดับใดก็ได้

แนะนำ: