คำถามติดแท็ก concurrency

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

19
ฉันจะใช้เธรดใน Python ได้อย่างไร
ฉันพยายามเข้าใจเธรดใน Python ฉันได้ดูเอกสารและตัวอย่าง แต่ค่อนข้างตรงไปตรงมาตัวอย่างมากมายซับซ้อนเกินไปและฉันมีปัญหาในการทำความเข้าใจ คุณแสดงให้เห็นอย่างชัดเจนถึงภารกิจที่ถูกแบ่งเป็นหลายเธรดได้อย่างไร


18
สภาพการแข่งขันคืออะไร?
เมื่อเขียนแอปพลิเคชันแบบมัลติเธรดหนึ่งในปัญหาที่พบบ่อยที่สุดคือสภาพการแข่งขัน คำถามของฉันต่อชุมชนคือ: สภาพการแข่งขันคืออะไร? คุณตรวจจับพวกมันได้อย่างไร คุณจัดการกับมันอย่างไร สุดท้ายคุณจะป้องกันไม่ให้เกิดขึ้นได้อย่างไร

16
การสะสมถูกแก้ไข; การดำเนินการแจงนับอาจไม่ทำงาน
ฉันไม่สามารถไปที่ด้านล่างของข้อผิดพลาดนี้ได้เพราะเมื่อมีการแนบตัวดีบั๊กมันจะไม่เกิดขึ้น ด้านล่างเป็นรหัส นี่คือเซิร์ฟเวอร์ WCF ในบริการ Windows เมธอด NotifySubscribeers ถูกเรียกโดยบริการเมื่อใดก็ตามที่มีเหตุการณ์ข้อมูล (ตามช่วงเวลาที่สุ่ม แต่ไม่บ่อยมาก - ประมาณ 800 ครั้งต่อวัน) เมื่อไคลเอนต์ Windows Forms สมัครสมาชิก ID สมาชิกจะถูกเพิ่มไปยังพจนานุกรมสมาชิกและเมื่อลูกค้ายกเลิกสมาชิกมันจะถูกลบออกจากพจนานุกรม ข้อผิดพลาดเกิดขึ้นเมื่อ (หรือหลังจาก) ลูกค้ายกเลิกการเป็นสมาชิก ปรากฏว่าในครั้งต่อไปที่เรียกใช้เมธอด NotifySubscribers () ลูป foreach () จะล้มเหลวด้วยข้อผิดพลาดในบรรทัดหัวเรื่อง วิธีการเขียนข้อผิดพลาดลงในบันทึกการใช้งานตามที่แสดงในรหัสด้านล่าง เมื่อมีการแนบดีบักเกอร์และการยกเลิกการเป็นลูกค้ารหัสจะทำงานได้ดี คุณเห็นปัญหาเกี่ยวกับรหัสนี้หรือไม่? ฉันต้องทำให้พจนานุกรมปลอดภัยไหม? [ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)] public class SubscriptionServer : ISubscriptionServer { private static IDictionary<Guid, Subscriber> subscribers; public SubscriptionServer() { …


10
Mutex คืออะไร
mutex เป็นแนวคิดการเขียนโปรแกรมที่ใช้บ่อยในการแก้ปัญหาหลายเธรด คำถามของฉันต่อชุมชน: Mutex คืออะไรและคุณใช้มันอย่างไร

12
JavaScript รับประกันว่าจะเป็นแบบเธรดเดียวหรือไม่
JavaScript เป็นที่รู้จักกันว่าเป็นเธรดเดี่ยวในการใช้งานเบราว์เซอร์สมัยใหม่ทั้งหมด แต่มีการระบุไว้ในมาตรฐานใด ๆ หรือเป็นเพียงประเพณี? ปลอดภัยไหมที่จะถือว่า JavaScript เป็นเธรดเดียว?

19
ConcurrentHashMap และ Collections.synchronizedMap (แผนที่) แตกต่างกันอย่างไร
ฉันมีแผนที่ซึ่งจะต้องแก้ไขหลายกระทู้พร้อมกัน ดูเหมือนจะมีการใช้งานแผนที่ที่แตกต่างกันสามแบบใน Java API: Hashtable Collections.synchronizedMap(Map) ConcurrentHashMap จากสิ่งที่ฉันเข้าใจHashtableคือการใช้งานเก่า (การขยายDictionaryคลาสล้าสมัย) ซึ่งได้รับการดัดแปลงในภายหลังเพื่อให้พอดีกับMapอินเตอร์เฟส แม้ว่าจะมีการซิงโครไนซ์ แต่ดูเหมือนว่าจะมีปัญหาเรื่องความสามารถในการปรับขนาดได้และไม่สนับสนุนโครงการใหม่ ๆ แต่แล้วอีกสองอันล่ะ? อะไรคือความแตกต่างระหว่าง Maps ที่ส่งคืนโดยCollections.synchronizedMap(Map)และConcurrentHashMaps? สิ่งที่เหมาะกับสถานการณ์ใด

9
เหตุใดจึงไม่มี ConcurrentHashSet เทียบกับ ConcurrentHashMap
HashSet ขึ้นอยู่กับ HashMap ถ้าเราดูที่การดำเนินการทุกอย่างจะถูกจัดการภายใต้HashSet<E>HashMap<E,Object> <E> ถูกใช้เป็นกุญแจของ HashMapถูกนำมาใช้เป็นกุญแจสำคัญของ และเรารู้ว่าHashMapมันไม่ปลอดภัย นั่นคือเหตุผลที่เรามีConcurrentHashMapใน Java จากนี้ฉันกำลังสับสนว่าทำไมเราไม่ได้มี ConcurrentHashSet ซึ่งควรจะอยู่บนพื้นฐานที่ConcurrentHashMap? มีอะไรอีกบ้างที่ฉันขาดหายไป? ฉันต้องการใช้Setในสภาพแวดล้อมแบบมัลติเธรด นอกจากนี้ถ้าผมต้องการที่จะสร้างของตัวเองConcurrentHashSetผมจะประสบความสำเร็จได้โดยเพียงแค่การเปลี่ยนHashMapไปConcurrentHashMapและออกจากส่วนที่เหลือเป็นคืออะไร?

8
NSOperation กับ Grand Central Dispatch
ฉันเรียนรู้เกี่ยวกับการเขียนโปรแกรมพร้อมกันสำหรับ iOS จนถึงขณะนี้ผมได้อ่านเกี่ยวกับNSOperation/NSOperationQueueGCDและ อะไรคือสาเหตุของการใช้NSOperationQueueเกินGCDและในทางกลับกัน? เสียงเหมือนทั้งนามธรรมGCDและNSOperationQueueแยกออกไปสร้างที่ชัดเจนNSThreadsจากผู้ใช้ อย่างไรก็ตามความสัมพันธ์ระหว่างสองแนวทางนี้ไม่ชัดเจนสำหรับฉันดังนั้นข้อเสนอแนะใด ๆ ที่จะชื่นชม!


23
มีข้อได้เปรียบในการใช้วิธีการซิงโครไนซ์แทนที่จะบล็อกแบบซิงโครไนซ์หรือไม่
ใครสามารถบอกข้อดีของวิธีการซิงโครไนซ์กับบล็อกซิงโครไนซ์กับตัวอย่างได้หรือไม่?

14
กลุ่มเธรดที่กำหนดเองใน Java 8 กระแสขนาน
เป็นไปได้หรือไม่ที่จะระบุเธรดพูลที่กำหนดเองสำหรับ Java 8 stream แบบขนาน ? ฉันไม่สามารถหาได้ทุกที่ ลองนึกภาพว่าฉันมีเซิร์ฟเวอร์แอปพลิเคชันและฉันต้องการใช้กระแสข้อมูลแบบขนาน แต่แอปพลิเคชั่นนั้นมีขนาดใหญ่และมีหลายเธรดดังนั้นฉันจึงต้องการแบ่งย่อยมัน ฉันไม่ต้องการให้งานที่รันช้าในหนึ่งโมดูลของงาน applicationblock จากโมดูลอื่น ถ้าฉันไม่สามารถใช้เธรดพูลที่แตกต่างกันสำหรับโมดูลที่แตกต่างกันก็หมายความว่าฉันไม่สามารถใช้สตรีมแบบขนานได้อย่างปลอดภัยในสถานการณ์จริงส่วนใหญ่ ลองตัวอย่างต่อไปนี้ มีงานที่ใช้งาน CPU มากในหัวข้อแยกต่างหาก งานยกระดับกระแสขนาน ภารกิจแรกถูกทำลายดังนั้นแต่ละขั้นตอนใช้เวลา 1 วินาที (จำลองโดยการนอนหลับของเธรด) ปัญหาคือเธรดอื่นค้างและรอให้งานที่เสียหายเสร็จสิ้น นี่เป็นตัวอย่างที่วางแผนไว้ แต่ลองนึกภาพแอป servlet และมีคนส่งงานที่ใช้เวลานานไปยังกลุ่มการเข้าร่วมส้อมที่ใช้ร่วมกัน public class ParallelTest { public static void main(String[] args) throws InterruptedException { ExecutorService es = Executors.newCachedThreadPool(); es.execute(() -> runTask(1000)); //incorrect task es.execute(() -> …

25
วิธีการรอให้เธรดทั้งหมดเสร็จสิ้นโดยใช้ ExecutorService
ฉันต้องทำงานบางอย่างทีละ 4 อย่างเช่นนี้: ExecutorService taskExecutor = Executors.newFixedThreadPool(4); while(...) { taskExecutor.execute(new MyTask()); } //...wait for completion somehow ฉันจะได้รับการแจ้งเตือนได้อย่างไรเมื่อทั้งหมดเสร็จสมบูรณ์ สำหรับตอนนี้ฉันไม่สามารถคิดอะไรได้ดีไปกว่าการตั้งตัวนับโกลบอลบางตัวและลดมันลงที่ส่วนท้ายของทุกภารกิจ หรือรับรายการ Futures และใน infinite loop monitor isDone สำหรับพวกเขาทั้งหมด อะไรคือวิธีแก้ปัญหาที่ดีกว่าที่ไม่เกี่ยวข้องกับการวนซ้ำไม่สิ้นสุด? ขอบคุณ

8
รูปแบบที่ดีสำหรับการใช้ Global Mutex ใน C # คืออะไร
คลาส Mutex เข้าใจผิดมากและ Mutex ทั่วโลกยิ่งกว่านั้นมาก รูปแบบที่ดีและปลอดภัยที่จะใช้เมื่อสร้าง Global mutexes คืออะไร หนึ่งที่จะทำงาน เครื่องของฉันอยู่ในระบบ รับประกันว่าจะปล่อย mutex อย่างถูกต้อง เป็นทางเลือกไม่แขวนตลอดไปหากไม่ได้รับ mutex ข้อตกลงกับกรณีที่กระบวนการอื่นละทิ้ง mutex
377 c#  concurrency  mutex 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.