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

คำถามที่เกี่ยวข้องหลายเธรดรวมถึงเทคนิคโครงสร้างและปัญหาด้านความปลอดภัย

3
ทำไมงูหลามเขียนด้วย GIL
การล็อคล่ามทั่วโลก (GIL) ดูเหมือนจะถูกอ้างถึงบ่อยครั้งเป็นเหตุผลหลักว่าทำไมการทำเกลียวและสิ่งที่คล้ายกันนั้นเป็นเรื่องยุ่งยากใน Python ซึ่งทำให้เกิดคำถามขึ้นมาว่า การเป็นโปรแกรมเมอร์ไม่ใช่ฉันไม่รู้ว่าทำไมอาจเป็น - อะไรคือเหตุผลที่อยู่เบื้องหลังในการวาง GIL?

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

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

3
เธรดเดี่ยวทำงานบนหลายคอร์ได้อย่างไร
ฉันพยายามที่จะเข้าใจในระดับสูงว่าเธรดเดี่ยวทำงานในหลายคอร์ได้อย่างไร ด้านล่างเป็นความเข้าใจที่ดีที่สุดของฉัน ฉันไม่เชื่อว่ามันถูกต้อง จากการอ่านHyper-threadingของฉันดูเหมือนว่าระบบปฏิบัติการจะจัดการคำแนะนำของเธรดทั้งหมดในลักษณะที่พวกเขาไม่ได้รอซึ่งกันและกัน จากนั้น Front-end ของ CPU จะจัดระเบียบคำแนะนำเหล่านั้นเพิ่มเติมโดยกระจายเธรดหนึ่งเธรดไปยังแต่ละคอร์และกระจายคำสั่งที่เป็นอิสระจากแต่ละเธรดในทุกรอบที่เปิด ดังนั้นหากมีเพียงเธรดเดียวดังนั้นระบบปฏิบัติการจะไม่ทำการเพิ่มประสิทธิภาพใด ๆ อย่างไรก็ตามส่วนหน้าของ CPU จะแจกจ่ายชุดคำสั่งที่เป็นอิสระในแต่ละคอร์ ตามhttps://stackoverflow.com/a/15936270ภาษาการเขียนโปรแกรมเฉพาะอาจสร้างเธรดมากขึ้นหรือน้อยลง แต่ไม่เกี่ยวข้องเมื่อพิจารณาว่าจะทำอย่างไรกับเธรดเหล่านั้น ระบบปฏิบัติการและ CPU จัดการสิ่งนี้ดังนั้นจึงเกิดขึ้นโดยไม่คำนึงถึงภาษาการเขียนโปรแกรมที่ใช้ เพียงเพื่อชี้แจงฉันถามเกี่ยวกับเธรดเดียวที่รันในหลายคอร์ไม่ใช่เกี่ยวกับการรันหลายเธรดบนแกนเดียว เกิดอะไรขึ้นกับบทสรุปของฉัน คำสั่งของเธรดอยู่ที่ไหนและอย่างไรแบ่งออกเป็นหลายแกน ภาษาการเขียนโปรแกรมสำคัญหรือไม่ ฉันรู้ว่านี่เป็นวิชาที่กว้างขวาง ฉันหวังว่าจะเข้าใจมันในระดับสูง

15
มัลติเธรดสำคัญอย่างไรในอุตสาหกรรมซอฟต์แวร์ปัจจุบัน [ปิด]
ฉันมีประสบการณ์เกือบ 3 ปีในการเขียนเว็บแอปพลิเคชันใน Java โดยใช้เฟรมเวิร์ก MVC (เช่น struts) ฉันไม่เคยเขียนรหัสหลายเธรดจนกว่าจะถึงตอนนี้ฉันได้เขียนรหัสสำหรับเครือข่ายค้าปลีกรายใหญ่ ฉันได้รับคำถามสองสามข้อเกี่ยวกับมัลติเธรดระหว่างการสัมภาษณ์และฉันมักตอบคำถามเหล่านี้ (ส่วนใหญ่เป็นคำถามง่าย ๆ ) ทำให้ฉันสงสัยว่า Multithreading มีความสำคัญอย่างไรในสถานการณ์ปัจจุบันของอุตสาหกรรม

1
มีความแตกต่างระหว่างเส้นใย coroutines และหัวข้อสีเขียวและถ้าเป็นเช่นนั้นมันคืออะไร?
วันนี้ฉันกำลังอ่านบทความเกี่ยวกับเส้นใยเกี่ยวกับเส้นใย coroutines และหัวข้อสีเขียวบนอินเทอร์เน็ตและดูเหมือนว่าแนวคิดเหล่านี้มีเหมือนกันมาก แต่มีความแตกต่างกันเล็กน้อยโดยเฉพาะอย่างยิ่งเมื่อเราพูดถึงเส้นใยและ coroutines มีการสรุปย่อที่ถูกต้องและกระชับในสิ่งที่ทำให้พวกเขาแตกต่างจากกันหรือไม่? อัปเดต: ฉันพบเอกสารการแยกความแตกต่างcoroutines และเส้นใย (N4024 C ++)ดีโดยเฉพาะอย่างยิ่งที่แตกต่างระหว่างเส้นใยและ coroutines

12
เหตุใดโปรแกรมจึงต้องใช้จำนวนแกนประมวลผลขั้นต่ำที่เฉพาะเจาะจง
เป็นไปได้ไหมที่จะเขียนโค้ด (หรือซอฟต์แวร์ที่สมบูรณ์แทนที่จะเป็นส่วนหนึ่งของรหัส) ที่ทำงานไม่ถูกต้องเมื่อทำงานบน CPU ที่มีจำนวนคอร์น้อยกว่า N? โดยไม่ตรวจสอบอย่างชัดเจนและล้มเหลวตามวัตถุประสงค์: หาก (noOfCores <4) จากนั้นทำงานไม่ถูกต้องตามวัตถุประสงค์ ฉันกำลังดูข้อกำหนดขั้นต่ำของเกม ( Dragon Age: Inquisition ) ขั้นต่ำของเกมและระบุขั้นต่ำของซีพียูสี่คอร์ ผู้เล่นหลายคนบอกว่ามันไม่ได้ทำงานบนซีพียูสองคอร์และ EVEN บนIntel Core i3s ที่มีฟิสิคัลคอร์สองตัวและคอร์ตรรกะสองคอร์ และมันก็ไม่ได้เป็นปัญหาของพลังการคำนวณ จากความเข้าใจของฉันเธรดจะถูกแยกออกจาก CPU อย่างสมบูรณ์โดยระบบปฏิบัติการเนื่องจากไม่สามารถทำได้ เพียงเพื่อล้างสิ่งออก: ฉันไม่ได้ถามว่า "ฉันสามารถค้นหาจำนวนแกนประมวลผลของ CPU จากโค้ดและไม่สามารถทำได้ตามวัตถุประสงค์หรือไม่" ... รหัสดังกล่าวจะไม่ได้ตั้งใจ (บังคับให้คุณซื้อ CPU ที่มีราคาแพงกว่าเพื่อรันโปรแกรม - โดยไม่จำเป็นต้องใช้พลังงานในการคำนวณ) ฉันถามว่ารหัสของคุณพูด, มีสี่กระทู้และล้มเหลวเมื่อสองหัวข้อที่มีการทำงานบนแกนเดียวกันทางกายภาพ(ไม่ชัดเจนตรวจสอบข้อมูลของระบบและจงใจล้มเหลว) ในระยะสั้นจะมีซอฟต์แวร์ที่ต้องใช้หลายคอร์โดยไม่จำเป็นต้องใช้พลังการประมวลผลเพิ่มเติมที่มาจากหลายคอร์หรือไม่? มันจะต้องมีแกนร่างกายแยก N

6
การทดสอบสภาพการแข่งขันแบบมัลติเธรด
อ่านความคิดเห็นต่อคำตอบนี้โดยเฉพาะ: เพียงเพราะคุณไม่สามารถเขียนการทดสอบไม่ได้หมายความว่ามันจะไม่พัง พฤติกรรมที่ไม่ได้กำหนดซึ่งมักจะเกิดขึ้นในการทำงานตามที่คาดไว้ (C และ C ++ เต็มไปด้วยนั้น) สภาพการแข่งขันการจัดเรียงใหม่ที่อาจเกิดขึ้นเนื่องจากรุ่นหน่วยความจำที่อ่อนแอ ... - CodesInChaos 7 ชั่วโมงที่ผ่านมา @CodesInChaos หากไม่สามารถทำซ้ำรหัสที่เขียนไปยัง 'แก้ไข' ไม่สามารถทดสอบได้เช่นกัน และการใส่รหัสที่ยังไม่ได้ทดสอบเข้าสู่การถ่ายทอดสดเป็นอาชญากรรมที่แย่กว่าในความคิดของฉัน - RhysW 5 ชั่วโมงที่แล้ว ... ฉันสงสัยหรือไม่ว่ามีวิธีการทั่วไปที่ดีในการทำให้เกิดปัญหาการผลิตอย่างต่อเนื่องไม่บ่อยนักซึ่งเกิดจากสภาพการแข่งขันในกรณีทดสอบ

16
ฉันควรดูแลสภาพการแข่งขันซึ่งแทบไม่มีโอกาสเกิดขึ้นจริงหรือ
ลองพิจารณาบางอย่างเช่นแอปพลิเคชัน GUI ที่เธรดหลักกำลังอัปเดต UI เกือบจะทันทีและเธรดอื่น ๆ กำลังโพลข้อมูลผ่านเครือข่ายหรือสิ่งที่รับประกันว่าจะใช้เวลา 5-10 วินาทีเพื่อให้งานเสร็จ ฉันได้รับคำตอบที่แตกต่างกันสำหรับเรื่องนี้ แต่บางคนบอกว่าถ้ามันเป็นสภาพการแข่งขันที่เป็นไปไม่ได้ทางสถิติไม่ต้องกังวลเลย แต่คนอื่น ๆ ก็บอกว่าถ้ามี 10 -53 % คุณไม่ได้อยู่ที่ตัวเลขนี่คือสิ่งที่ฉันเคยได้ยิน) เกี่ยวกับเวทมนตร์ของวูดูที่เกิดขึ้นเนื่องจากสภาพการแข่งขันให้ขอรับ / ปลดล็อกเธรดที่ต้องการเสมอ คุณคิดยังไง? มันเป็นวิธีการเขียนโปรแกรมที่ดีในการจัดการสภาพการแข่งขันในสถานการณ์ที่เป็นไปไม่ได้ทางสถิติหรือไม่? หรือมันจะไม่จำเป็นโดยสิ้นเชิงหรือต่อต้านการเพิ่มรหัสบรรทัดเพิ่มเติมเพื่อขัดขวางการอ่าน?

8
อะไรคือข้อเสียของการใช้งาน JavaScript รันไทม์แบบมัลติเธรด? [ปิด]
ฉันทำงานเกี่ยวกับการใช้งาน JavaScript แบบหลายเธรดสำหรับสัปดาห์ที่ผ่านมา ฉันมีหลักฐานของแนวคิดที่ทำใน C ++ โดยใช้ JavaScriptCore และเพิ่ม สถาปัตยกรรมนั้นง่าย: เมื่อรันไทม์เสร็จสิ้นการประเมินสคริปต์หลักมันจะเปิดตัวและเข้าร่วมเธรดพูลซึ่งเริ่มเลือกงานจากคิวลำดับความสำคัญที่ใช้ร่วมกันหากสองภารกิจพยายามเข้าถึงตัวแปรพร้อมกันมันจะถูกทำเครื่องหมายอะตอมมิก . ปัญหาคือเมื่อฉันแสดงการออกแบบนี้ให้โปรแกรมเมอร์ JavaScript ฉันได้รับความคิดเห็นเชิงลบอย่างมากและฉันไม่รู้ว่าทำไม แม้จะเป็นส่วนตัวพวกเขาทุกคนบอกว่าจาวาสคริปต์นั้นมีความหมายว่าเป็นเธรดเดี่ยวซึ่งไลบรารีที่มีอยู่จะต้องถูกเขียนใหม่และ gremlins จะวางไข่และกินสิ่งมีชีวิตทุกชนิดถ้าฉันทำงานต่อไป ตอนแรกฉันมีการนำ coroutine มาใช้ (โดยใช้บริบทเพิ่ม) ในสถานที่เช่นกัน แต่ฉันต้องทิ้ง (JavaScriptCore มีความรู้เกี่ยวกับสแต็ค) และฉันไม่ต้องการเสี่ยงต่อความโกรธของพวกเขาดังนั้นฉันจึงตัดสินใจไม่พูดถึงมัน คุณคิดอย่างไร? JavaScript หมายถึงเป็นเธรดเดี่ยวหรือไม่และควรปล่อยไว้ตามลำพังหรือไม่ เหตุใดทุกคนจึงไม่เห็นด้วยกับการรันไทม์ JavaScript ที่ทำงานพร้อมกัน แก้ไข: ขณะนี้โครงการอยู่ในGitHubทดลองด้วยตัวเองและแจ้งให้เราทราบว่าคุณคิดอย่างไร ต่อไปนี้เป็นรูปภาพของสัญญาที่รันบนคอร์ CPU ทั้งหมดพร้อมกันโดยไม่มีการช่วงชิง:

19
ให้บริการงานพื้นหลังในไซต์ขนาดใหญ่
เรากำลังจัดการกับปัญหาที่น่าสนใจใน StackOverflow เรามีงานเล็ก ๆ น้อย ๆ "ที่ต้องทำในไม่ช้า" ตัวอย่างกำลังอัปเดตรายการ "คำถามที่เกี่ยวข้อง" สิ่งที่เราทำในอดีตคือการแบกภาระงานเหล่านั้นลงบนหน้าโหลดของผู้ใช้บางคน เรื่องนี้ไม่เหมาะ แต่ก็ไม่ได้สังเกตเห็นได้ชัดเจนจริงๆ ตอนนี้ SO จึงผ่านเครื่องหมายคำถาม 1,000,000 รายการผู้ใช้ที่โชคร้ายเหล่านั้นเริ่มรู้สึก วิธีแก้ปัญหาตามธรรมชาติคือการผลักงานเหล่านี้เป็นพื้นหลัง มีสองวิธีในการทำสิ่งนี้ที่ฉันกำลังพิจารณา 1. ใน IIS เป็น Thread-Pool / Work-Queue ที่กำหนดเอง โดยพื้นฐานแล้วเราจะหมุนเธรดไม่กี่อัน (ไม่ใช่ThreadPoolเพื่อไม่รบกวน IIS) และให้พวกเขาให้บริการคอลเลกชันบางอย่างที่เรากำลังผลักให้Funcsทำงาน โปรใหญ่ที่นี่คือความเรียบง่าย เราไม่ต้องกังวลเกี่ยวกับการจัดการอะไรเลยและเราไม่จำเป็นต้องตรวจสอบให้แน่ใจว่าบริการจากภายนอกนั้นพร้อมแล้วที่จะตอบสนอง นอกจากนี้เรายังสามารถเข้าถึงรหัสทั่วไปของเราทั้งหมด คอนดิชั่นก็คือว่าเราไม่ควรใช้เธรดพื้นหลัง การคัดค้านที่ฉันรู้นั้นมีศูนย์กลางอยู่ที่ IIS ที่หิวโหย (ถ้าคุณใช้ ThreadPool) และเธรดที่สุ่มแบบสุ่ม (เนื่องจากการรีไซเคิล AppPool) เรามีโครงสร้างพื้นฐานที่มีอยู่เพื่อทำให้เธรดที่ตายแบบสุ่มไม่ใช่ประเด็น (เป็นไปได้ในการตรวจสอบงานที่ถูกทอดทิ้งโดยทั่วไป) และ จำกัด จำนวนเธรด (และการใช้เธรดที่ไม่ใช่ ThreadPool) …

1
goroutine พูลเป็นแบบเธรดสีเขียวหรือไม่
ผู้วิจารณ์ที่นี่เสนอคำวิจารณ์ต่อไปนี้ของหัวข้อสีเขียว: ตอนแรกฉันขายในโมเดล N: M เพื่อให้มีการเขียนโปรแกรมที่ขับเคลื่อนด้วยเหตุการณ์โดยไม่ต้องโทรกลับนรก คุณสามารถเขียนโค้ดที่ดูเหมือนรหัสขั้นตอนเก่าที่เจ็บปวดได้ แต่ภายใต้มีเวทย์มนตร์ที่ใช้งานการสลับผู้ใช้เมื่อใดก็ตามที่บางสิ่งจะปิดกั้น ฟังดูดี. ปัญหาคือเราท้ายการแก้ไขความซับซ้อนด้วยความซับซ้อนมากขึ้น swapcontext () และตระกูลค่อนข้างแคบไปข้างหน้าความซับซ้อนมาจากที่อื่น ๆ ทันใดนั้นคุณถูกบังคับให้เขียนตารางเวลา userspace และเดาว่ามันยากจริงๆที่จะเขียนตัวจัดตารางเวลาที่จะทำงานได้ดีขึ้นซึ่งตารางเวลาของ Linux ที่มีความพยายามมาหลายปี ตอนนี้คุณต้องการกำหนดเวลาให้กับเธรด N สีเขียวของฟิสิคัลเธรด M ดังนั้นคุณต้องกังวลเกี่ยวกับการซิงโครไนซ์ การซิงโครไนซ์นำปัญหาด้านประสิทธิภาพมาใช้เพื่อให้คุณเริ่มได้ในตอนนี้คุณกำลังลงสู่หลุมกระต่ายที่ไม่มีล็อค การสร้างตัวกำหนดตารางเวลาพร้อมกันที่ถูกต้องสูงไม่ใช่เรื่องง่าย บทวิจารณ์อื่นอยู่ที่นี่ : กระบวนการเดียวที่แกล้งทำหลายเธรดมีปัญหามากมาย หนึ่งในนั้นคือเธรดที่แกล้งทำอยู่บนหน้าเพจที่ผิด คำถามของฉัน - จะไป lang ของ goroutines (สำหรับสระว่ายน้ำเริ่มต้น) เพียงหัวข้อสีเขียว? ถ้าเป็นเช่นนั้นพวกเขาจะจัดการกับคำวิจารณ์ข้างต้นหรือไม่

10
ทำไมรหัสของคุณไม่ควรใช้ CPU 100% [ปิด]
ฉันกำลังพูดโดยเฉพาะเกี่ยวกับโปรแกรม C # .NET 4 ที่ทำงานบน Windows XP หรือสูงกว่า แต่คำตอบทั่วไปก็ยอมรับได้เช่นกัน สมมติว่าโปรแกรมที่ได้รับการปรับให้เหมาะสมและมีประสิทธิภาพนั้น ปัญหานี่คือผลกระทบของการใช้งาน CPU สูงกับฮาร์ดแวร์ทั้งหมดและควรใช้โปรแกรมที่มีการใช้งานสูงเพื่อลดการสึกหรอหรือไม่ไม่ว่าการใช้งานของฉันจะมีประสิทธิภาพหรือไม่ เพื่อนร่วมงานวันนี้แนะนำว่าฉันไม่ควรตั้งเป้าการใช้งาน CPU 100% ในกระบวนการโหลดข้อมูลเพราะ "ซีพียูสมัยใหม่ราคาถูกและจะลดลงอย่างรวดเร็วที่ 100% ซีพียู" มันเป็นเรื่องจริงเหรอ? และถ้าเป็นเช่นนั้นทำไม ก่อนหน้านี้ฉันรู้สึกว่าการใช้ CPU 100% นั้นดีกว่าสำหรับการใช้งานที่หนักหน่วงหรือยาวนานและฉันก็ไม่สามารถหาแหล่งที่มาที่น่านับถือในเรื่องนี้ได้
42 c#  multithreading  cpu  usage 

5
ความไม่สามารถเปลี่ยนรูปแบบได้ทั้งหมดไม่จำเป็นต้องล็อคในการเขียนโปรแกรมแบบหลายโปรเซสเซอร์หรือไม่?
ส่วนที่ 1 ชัดเจนไม่สามารถตัดทอนความต้องการล็อคในการเขียนโปรแกรมแบบมัลติโปรเซสเซอร์ลดความต้องการนั้นหรือมีกรณีที่ความไม่สามารถเปลี่ยนได้เพียงอย่างเดียวไม่เพียงพอหรือไม่? สำหรับฉันดูเหมือนว่าคุณสามารถเลื่อนการประมวลผลและรัฐแค็ปซูลได้นานก่อนที่โปรแกรมส่วนใหญ่จะต้องทำอะไรบางอย่างจริง (อัปเดตแหล่งข้อมูลสร้างรายงานยกเว้นข้อยกเว้น ฯลฯ ) การกระทำดังกล่าวสามารถทำได้โดยไม่ล็อคหรือไม่? การกระทำเพียงแค่โยนวัตถุแต่ละชิ้นออกไปและสร้างใหม่แทนที่จะเปลี่ยนแบบเดิม (มุมมองที่หยาบคายของการเปลี่ยนแปลงไม่ได้) ให้การป้องกันที่สมบูรณ์จากการโต้แย้งระหว่างกระบวนการหรือมีมุมที่ยังต้องล็อค? ฉันรู้ว่าโปรแกรมเมอร์และนักคณิตศาสตร์ที่ใช้งานได้จำนวนมากชอบพูดถึง "ไม่มีผลข้างเคียง" แต่ใน "โลกแห่งความจริง" ทุกอย่างมีผลข้างเคียงแม้ว่าจะถึงเวลาที่ต้องใช้คำสั่งเครื่อง ฉันสนใจทั้งคำตอบเชิงทฤษฎี / วิชาการและคำตอบเชิงปฏิบัติ / โลกแห่งความจริง หากความไม่สามารถเปลี่ยนแปลงได้ปลอดภัยตามขอบเขตหรือสมมติฐานบางอย่างฉันต้องการทราบว่าขอบเขตของ "เขตปลอดภัย" คืออะไรกันแน่ ตัวอย่างของขอบเขตที่เป็นไปได้: I / O ยกเว้น / ข้อผิดพลาด การโต้ตอบกับโปรแกรมที่เขียนเป็นภาษาอื่น การโต้ตอบกับเครื่องอื่น ๆ (ทางกายภาพเสมือนหรือตามทฤษฎี) ขอขอบคุณเป็นพิเศษสำหรับ @JimmaHoffa สำหรับความคิดเห็นของเขาซึ่งเริ่มต้นคำถามนี้! ส่วนที่ 2 การเขียนโปรแกรมหลายตัวประมวลผลมักจะใช้เป็นเทคนิคการเพิ่มประสิทธิภาพ - เพื่อให้โค้ดทำงานได้เร็วขึ้น เมื่อไหร่ที่จะใช้การล็อคกับวัตถุที่ไม่เปลี่ยนรูปได้เร็วขึ้น? เมื่อพิจารณาถึงขีด จำกัด ที่กำหนดไว้ในกฎหมายของ Amdahlคุณสามารถบรรลุประสิทธิภาพที่เหนือกว่าทุกประการ (ไม่ว่าจะมีหรือไม่มีตัวเก็บขยะที่พิจารณา) กับวัตถุที่ไม่เปลี่ยนรูปหรือการล็อควัตถุที่ไม่แน่นอน …

4
เหตุใดจึงเป็นความรับผิดชอบของผู้โทรเพื่อความปลอดภัยของเธรดในการเขียนโปรแกรม GUI?
ฉันเคยเห็นมาแล้วในหลาย ๆ ที่ว่ามันเป็นภูมิปัญญาที่ยอมรับ1ว่าเป็นความรับผิดชอบของผู้โทรเพื่อให้แน่ใจว่าคุณอยู่ในเธรด UI เมื่ออัปเดตองค์ประกอบ UI (โดยเฉพาะใน Java Swing ที่คุณอยู่ในEvent Dispatch Thread ) . ทำไมเป็นเช่นนี้ Event Dispatch Thread เป็นปัญหาของมุมมองใน MVC / MVP / MVVM เพื่อจัดการที่ใดก็ได้ แต่มุมมองจะสร้างการเชื่อมต่ออย่างแน่นหนาระหว่างการนำไปใช้ของมุมมองและโมเดลการทำเกลียวของการปรับใช้มุมมองนั้น โดยเฉพาะสมมติว่าฉันมีแอปพลิเคชันที่ออกแบบมาให้ใช้งาน MVC ซึ่งใช้ Swing ถ้าโทรเป็นผู้รับผิดชอบสำหรับส่วนประกอบปรับปรุงในกระทู้ที่จัดกิจกรรมส่งแล้วถ้าฉันพยายามที่จะสลับออกสวิงดูการดำเนินงานของฉันสำหรับการดำเนินงาน JavaFX ผมต้องเปลี่ยนทุกรหัส Presenter / ควบคุมการใช้ด้าย JavaFX ประยุกต์ใช้แทน ดังนั้นฉันคิดว่าฉันมีสองคำถาม: เหตุใดจึงเป็นความรับผิดชอบของผู้โทรเพื่อให้มั่นใจในความปลอดภัยของเธรดส่วนประกอบ UI ข้อบกพร่องในการให้เหตุผลด้านบนของฉันอยู่ที่ไหน ฉันจะออกแบบแอปพลิเคชันของฉันให้มีเพศสัมพันธ์แบบหลวม ๆ เกี่ยวกับความปลอดภัยของเธรดเหล่านี้ได้อย่างไร แต่ยังคงปลอดภัยต่อเธรดอย่างเหมาะสม ให้ฉันเพิ่มรหัส MCVE Java เพื่อแสดงให้เห็นถึงสิ่งที่ฉันหมายถึงโดย …

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