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

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

26
ฉันจะทดสอบรหัสเธรดได้อย่างไร
ฉันได้หลีกเลี่ยงฝันร้ายที่กำลังทดสอบโค้ดหลายเธรดเพราะมันดูเหมือนว่าเป็นเขตที่วางทุ่นระเบิดมากเกินไป ฉันต้องการถามว่าผู้คนทดสอบโค้ดที่อาศัยเธรดเพื่อการดำเนินการที่ประสบความสำเร็จได้อย่างไรหรือว่าผู้คนทดสอบเกี่ยวกับปัญหาประเภทนั้น ๆ ที่ปรากฏขึ้นเมื่อสองเธรดตอบสนองในลักษณะที่กำหนดเท่านั้น ดูเหมือนว่าปัญหาสำคัญสำหรับโปรแกรมเมอร์วันนี้มันจะเป็นประโยชน์ในการรวมความรู้ของเรากับสิ่งนี้

22
คำหลักที่ระเหยง่ายมีประโยชน์สำหรับอะไร
ที่ทำงานวันนี้ฉันเจอvolatileคำค้นหาในชวา ไม่คุ้นเคยกับมันฉันพบคำอธิบายนี้: ทฤษฎีและการปฏิบัติของ Java: การจัดการความผันผวน ระบุรายละเอียดที่บทความนั้นอธิบายคำหลักที่เป็นปัญหาคุณเคยใช้หรือเคยเห็นกรณีที่คุณสามารถใช้คำหลักนี้ในลักษณะที่ถูกต้องหรือไม่

9
ระเหยกับลูกโซ่กับล็อค
สมมติว่าคลาสมีpublic int counterฟิลด์ที่เข้าถึงได้โดยหลายเธรด นี่intเป็นเพียงการเพิ่มหรือลดเท่านั้น หากต้องการเพิ่มฟิลด์นี้ควรใช้วิธีการใดและเพราะเหตุใด lock(this.locker) this.counter++;, Interlocked.Increment(ref this.counter);, เปลี่ยนการปรับปรุงการเข้าถึงการcounterpublic volatile ตอนนี้ที่ผมได้ค้นพบvolatileฉันได้รับการลบหลายงบและการใช้งานของlock Interlockedแต่มีเหตุผลที่จะไม่ทำเช่นนี้หรือไม่?

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

22
การดำเนินการข้ามเธรดไม่ถูกต้อง: การควบคุมการเข้าถึงจากเธรดอื่นที่ไม่ใช่เธรดที่สร้างขึ้น
ฉันมีสถานการณ์ (แบบฟอร์ม Windows, C #, .NET) มีรูปแบบหลักที่โฮสต์การควบคุมผู้ใช้บางส่วน การควบคุมผู้ใช้ดำเนินการกับข้อมูลจำนวนมากเช่นถ้าฉันเรียกUserControl_LoadวิธีการโดยตรงUI จะไม่ตอบสนองต่อช่วงเวลาสำหรับการดำเนินการตามวิธีโหลด เพื่อเอาชนะสิ่งนี้ฉันโหลดข้อมูลในเธรดอื่น (พยายามเปลี่ยนรหัสที่มีอยู่ให้น้อยที่สุดเท่าที่จะทำได้) ฉันใช้เธรดผู้ทำงานเบื้องหลังซึ่งจะโหลดข้อมูลและเมื่อเสร็จแล้วจะแจ้งให้แอปพลิเคชันทราบว่าได้ทำงานเสร็จแล้ว ตอนนี้เป็นปัญหาจริง UI ทั้งหมด (ฟอร์มหลักและส่วนควบคุมย่อยผู้ใช้) ถูกสร้างขึ้นบนเธรดหลักหลัก ในวิธีโหลดของการควบคุมผู้ใช้ฉันกำลังดึงข้อมูลตามค่าของการควบคุมบางอย่าง (เช่นกล่องข้อความ) ใน userControl รหัสเทียมจะมีลักษณะเช่นนี้: รหัส 1 UserContrl1_LoadDataMethod() { if (textbox1.text == "MyName") // This gives exception { //Load data corresponding to "MyName". //Populate a globale variable List<string> which will be binded to …

11
ManualResetEvent และ AutoResetEvent ใน. NET แตกต่างกันอย่างไร
ฉันได้อ่านเอกสารเกี่ยวกับเรื่องนี้แล้วและฉันคิดว่าฉันเข้าใจ AutoResetEventรีเซ็ตเมื่อรหัสผ่านevent.WaitOne()แต่ManualResetEventไม่ได้ ถูกต้องหรือไม่

13
ความแตกต่างระหว่างอินเตอร์เฟส Runnable และ Callable ใน Java
อะไรคือความแตกต่างระหว่างการใช้RunnableและCallableอินเตอร์เฟสเมื่อออกแบบเธรดที่เกิดขึ้นพร้อมกันใน Java ทำไมคุณถึงเลือกอันใดอันหนึ่ง?

16
เหตุใดล็อค (นี่) {…} ไม่ดี
MSDN เอกสารกล่าวว่า public class SomeObject { public void SomeOperation() { lock(this) { //Access instance variables } } } คือ "ปัญหาหากอินสแตนซ์สามารถเข้าถึงได้แบบสาธารณะ" ฉันสงสัยว่าทำไม เป็นเพราะล็อคจะถูกเก็บไว้นานเกินความจำเป็น? หรือมีเหตุผลที่ร้ายกาจกว่านี้อีกไหม?

11
วัตถุประสงค์ของ Looper คืออะไรและจะใช้งานอย่างไร
ฉันใหม่สำหรับ Android ฉันต้องการรู้ว่าLooperชั้นเรียนทำอะไรและใช้อย่างไร ฉันอ่านเอกสารระดับ Android Looper แล้วแต่ฉันไม่สามารถเข้าใจได้อย่างสมบูรณ์ ฉันเคยเห็นมันในหลาย ๆ ที่ แต่ไม่เข้าใจวัตถุประสงค์ของมัน ใครสามารถช่วยฉันด้วยการกำหนดวัตถุประสงค์Looperและโดยให้เป็นตัวอย่างง่ายๆถ้าเป็นไปได้?

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

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

6
ความแตกต่างระหว่าง Invoke () และ BeginInvoke () คืออะไร
แค่สงสัยว่าความแตกต่างระหว่างBeginInvoke()และInvoke()คืออะไร? ส่วนใหญ่สิ่งที่แต่ละคนจะใช้สำหรับ แก้ไข: อะไรคือความแตกต่างระหว่างการสร้างวัตถุเธรดและการเรียกใช้การเรียกนั้นและเพียงแค่เรียกBeginInvoke()ผู้แทน? หรือพวกเขาเป็นสิ่งเดียวกัน

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

7
ตัวอย่างง่ายๆของการเธรดใน C ++
คำตอบของคำถามนี้เป็นความพยายามของชุมชน แก้ไขคำตอบที่มีอยู่เพื่อปรับปรุงโพสต์นี้ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ใครบางคนสามารถโพสต์ตัวอย่างง่ายๆของการเริ่มต้นสองหัวข้อ (Object Oriented) ใน C ++ ฉันกำลังมองหาวัตถุเธรด C ++ ที่แท้จริงที่ฉันสามารถขยายวิธีการรันบน (หรือสิ่งที่คล้ายกัน) ซึ่งตรงข้ามกับการเรียกไลบรารีเธรด C-style ฉันออกจากคำขอเฉพาะระบบปฏิบัติการใด ๆ ด้วยความหวังว่าใครก็ตามที่ตอบกลับจะตอบกลับด้วยห้องสมุดข้ามแพลตฟอร์มที่จะใช้ ตอนนี้ฉันกำลังอธิบายอย่างชัดเจน


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