คุณเรียนรู้บทเรียนใดจากโปรเจ็กต์ที่เกือบ / ล้มเหลวจริง ๆ เนื่องจากมัลติเธรดไม่ดี
บางครั้งกรอบกำหนดรูปแบบเกลียวบางอย่างที่ทำให้สิ่งที่ลำดับความสำคัญยากที่จะได้รับ
สำหรับฉันฉันยังไม่หายจากความล้มเหลวครั้งสุดท้ายและฉันรู้สึกว่ามันดีกว่าที่ฉันจะไม่ทำงานกับสิ่งที่เกี่ยวข้องกับมัลติเธรดในกรอบงานนั้น
ฉันพบว่าฉันเก่งในการแก้ปัญหาแบบมัลติเธรดซึ่งมีทางแยกอย่างง่าย / เข้าร่วมและที่ซึ่งข้อมูลเดินทางไปในทิศทางเดียวเท่านั้น (ในขณะที่สัญญาณสามารถเดินทางในทิศทางวงกลม)
ฉันไม่สามารถจัดการ GUI ที่งานบางอย่างสามารถทำได้ในเธรดที่มีการจัดลำดับอย่างเคร่งครัดเท่านั้น ("เธรดหลัก") และงานอื่น ๆ สามารถทำได้บนเธรดใดก็ได้ยกเว้นเธรดหลัก ("เธรดผู้ปฏิบัติงาน") และ ที่ข้อมูลและข้อความต้องเดินทางในทุกทิศทางระหว่างองค์ประกอบ N (กราฟที่เชื่อมต่ออย่างสมบูรณ์)
ตอนที่ฉันออกจากโครงการนั้นไปอีกโครงการหนึ่งมีปัญหาการหยุดชะงักทุกที่ ฉันได้ยินมาว่า 2-3 เดือนต่อมาผู้พัฒนารายอื่นหลายคนจัดการเพื่อแก้ไขปัญหาการหยุดชะงักทั้งหมดจนถึงจุดที่สามารถส่งมอบให้กับลูกค้าได้ ฉันไม่เคยพบว่าความรู้ที่หายไปนั้นขาดไป
บางอย่างเกี่ยวกับโครงการ: จำนวน ID ข้อความ (ค่าจำนวนเต็มซึ่งอธิบายความหมายของเหตุการณ์ที่สามารถส่งไปยังคิวข้อความของวัตถุอื่นโดยไม่คำนึงถึงเธรด) ทำงานเป็นหลายพันรายการ สตริงที่ไม่ซ้ำกัน (ข้อความผู้ใช้) ยังทำงานเกี่ยวกับหนึ่งพัน
ที่เพิ่ม
การเปรียบเทียบที่ดีที่สุดที่ฉันได้รับจากทีมอื่น (ไม่เกี่ยวข้องกับโครงการในอดีตหรือปัจจุบันของฉัน) คือการ "ใส่ข้อมูลในฐานข้อมูล" ("ฐานข้อมูล" หมายถึงการรวมศูนย์และอัปเดตอะตอมมิก) ใน GUI ที่มีการแยกส่วนเป็นหลายมุมมองทั้งหมดที่ทำงานบน "เธรดหลัก" เดียวกันและการยกที่ไม่ใช่ GUI ทั้งหมดในเธรดผู้ปฏิบัติงานแต่ละคนข้อมูลของแอปพลิเคชันควร จะถูกเก็บไว้ในฐานข้อมูลเดียวซึ่งทำหน้าที่เหมือนฐานข้อมูลและให้ "ฐานข้อมูล" จัดการ "การปรับปรุงอะตอมมิก" ทั้งหมดที่เกี่ยวข้องกับการพึ่งพาข้อมูลที่ไม่น่าสนใจ ส่วนอื่น ๆ ทั้งหมดของ GUI เพียงจัดการวาดหน้าจอและไม่มีอะไรอื่น ส่วน UI สามารถแคชสิ่งต่าง ๆ และผู้ใช้จะไม่สังเกตเห็นว่าเป็นเศษเสี้ยวของเศษเสี้ยววินาทีถ้ามันถูกออกแบบอย่างเหมาะสม "ฐานข้อมูล" นี้เรียกอีกอย่างว่า "เอกสาร" ในสถาปัตยกรรมมุมมองเอกสาร น่าเสียดาย - ไม่แอพของฉันเก็บข้อมูลทั้งหมดไว้ใน Views ฉันไม่รู้ว่าทำไมมันเป็นอย่างนั้น
ผู้ร่วมให้ข้อมูล:
(ผู้มีส่วนร่วมไม่จำเป็นต้องใช้ตัวอย่างจริง / ส่วนตัวตัวอย่างบทเรียนจากตัวอย่างเล็ก ๆ น้อย ๆ หากคุณได้รับการตัดสินว่ามีความน่าเชื่อถือเรายินดีต้อนรับด้วยเช่นกัน)