คำถามติดแท็ก parallel.foreach

4
ฉันจะ จำกัด Parallel.ForEach ได้อย่างไร
ฉันมีวงจร async Parallel.ForEach () ซึ่งฉันดาวน์โหลดบางเว็บเพจ แบนด์วิดท์ของฉันมี จำกัด ดังนั้นฉันจึงสามารถดาวน์โหลดได้เพียง x หน้าต่อครั้ง แต่ Parallel.ForEach ดำเนินการรายการทั้งหมดของเว็บเพจที่ต้องการ มีวิธี จำกัด หมายเลขเธรดหรือตัว จำกัด อื่นใดขณะเรียกใช้ Parallel.ForEach หรือไม่ รหัสตัวอย่าง: Parallel.ForEach(listOfWebpages, webpage => { Download(webpage); }); งานจริงไม่มีส่วนเกี่ยวข้องกับหน้าเว็บดังนั้นโซลูชันการรวบรวมข้อมูลบนเว็บที่สร้างสรรค์จะไม่ช่วยอะไร

9
การทำรังกำลังรออยู่ใน Parallel.ForEach
ในแอพพลิเคชั่นรถไฟใต้ดินฉันต้องทำการเรียก WCF เป็นจำนวนมาก มีการโทรจำนวนมากที่ต้องทำการโทรออกดังนั้นฉันต้องทำการโทรแบบวนซ้ำ ปัญหาคือว่าลูปแบบขนานจะออกก่อนที่การเรียก WCF จะเสร็จสมบูรณ์ คุณจะปรับการทำงานให้เป็นไปตามที่คาดไว้ได้อย่างไร var ids = new List<string>() { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" }; var customers = new System.Collections.Concurrent.BlockingCollection<Customer>(); Parallel.ForEach(ids, async i => { ICustomerRepo repo = new CustomerRepo(); var cust = await repo.GetCustomer(i); customers.Add(cust); }); foreach ( var …

5
ฉันจะแปลงรหัส foreach นี้เป็น Parallel.ForEach ได้อย่างไร
ฉันสับสนParallel.ForEachเล็กน้อย มันคืออะไรParallel.ForEachและมันทำอะไรกันแน่? โปรดอย่าอ้างอิงลิงก์ MSDN ใด ๆ นี่คือตัวอย่างง่ายๆ: string[] lines = File.ReadAllLines(txtProxyListPath.Text); List<string> list_lines = new List<string>(lines); foreach (string line in list_lines) { //My Stuff } ฉันจะเขียนตัวอย่างนี้อีกครั้งได้Parallel.ForEachอย่างไร

4
Parallel.ForEach กับ Task.Run และ Task.WhenAll
อะไรคือความแตกต่างระหว่างการใช้ Parallel.ForEach หรือ Task.Run () เพื่อเริ่มชุดของงานแบบอะซิงโครนัส? รุ่น 1: List<string> strings = new List<string> { "s1", "s2", "s3" }; Parallel.ForEach(strings, s => { DoSomething(s); }); รุ่น 2: List<string> strings = new List<string> { "s1", "s2", "s3" }; List<Task> Tasks = new List<Task>(); foreach (var s in strings) { Tasks.Add(Task.Run(() => DoSomething(s))); …

3
Parallel.ForEach () vs. foreach (IEnumerable <T> .AsParallel ())
เอ๋อฉันพยายามค้นหาสองวิธีนี้ใน BCL โดยใช้ Reflector แต่หาไม่พบ ข้อแตกต่างระหว่างสองตัวอย่างนี้คืออะไร A: IEnumerable&lt;string&gt; items = ... Parallel.ForEach(items, item =&gt; { ... }); B: IEnumerable&lt;string&gt; items = ... foreach (var item in items.AsParallel()) { ... } มีผลที่แตกต่างจากการใช้อย่างใดอย่างหนึ่งมากกว่าอื่น ๆ ? (สมมติว่าสิ่งที่ฉันทำในเนื้อหาที่มีวงเล็บของทั้งสองตัวอย่างนั้นปลอดภัยสำหรับเธรด)

5
ด้านหน้าขนานกับแลมด้าแบบอะซิงโครนัส
ฉันต้องการจัดการคอลเลคชันควบคู่กันไป แต่ฉันประสบปัญหาในการใช้งานจึงหวังว่าจะได้รับความช่วยเหลือ ปัญหาเกิดขึ้นถ้าฉันต้องการเรียกวิธีการที่ทำเครื่องหมาย async ใน C # ภายในแลมบ์ดาของลูปขนาน ตัวอย่างเช่น: var bag = new ConcurrentBag&lt;object&gt;(); Parallel.ForEach(myCollection, async item =&gt; { // some pre stuff var response = await GetData(item); bag.Add(response); // some post stuff } var count = bag.Count; ปัญหาเกิดขึ้นกับการนับเป็น 0 เนื่องจากเธรดทั้งหมดที่สร้างขึ้นมีประสิทธิภาพเป็นเพียงเธรดพื้นหลังและการParallel.ForEachโทรไม่รอให้เสร็จสิ้น หากฉันลบคีย์เวิร์ด async วิธีการจะมีลักษณะดังนี้: var bag = new ConcurrentBag&lt;object&gt;(); Parallel.ForEach(myCollection, …

5
แบ่งขนานไปข้างหน้า?
ฉันจะแยกออกจากเส้นขนานสำหรับลูปได้อย่างไร ฉันมีข้อความที่ค่อนข้างซับซ้อนซึ่งมีลักษณะดังต่อไปนี้: Parallel.ForEach&lt;ColorIndexHolder&gt;(ColorIndex.AsEnumerable(), new Action&lt;ColorIndexHolder&gt;((ColorIndexHolder Element) =&gt; { if (Element.StartIndex &lt;= I &amp;&amp; Element.StartIndex + Element.Length &gt;= I) { Found = true; break; } })); การใช้คลาสคู่ขนานฉันสามารถเพิ่มประสิทธิภาพกระบวนการนี้ได้ อย่างไรก็ตาม; ฉันคิดไม่ออกว่าจะทำลายลูปขนานได้อย่างไร? break;คำสั่งพ่นไวยากรณ์ผิดพลาดต่อไปนี้: ไม่มีการปิดล้อมลูปที่จะทำลายหรือดำเนินการต่อ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.