ตัวอย่างรหัสจากหนังสือรูปแบบความปลอดภัยของ Delphi Thread
https://dalija.prasnikar.info/delphitspatt/
https://dalija.prasnikar.info
ตอนที่ 2. ห้องสมุดเวลาทำงานหลัก
บทที่ 5 การลงทะเบียนควบคุมจุดลอยตัว
- BrokenMath.dpr
- Brokenmath.dproj
- safemath.dpr
- safemath.dproj
บทที่ 7.1 พารามิเตอร์
- parameters.dpr
- พารามิเตอร์. dproj
- Parametersmainf.pas
- Parametersmainf.dfm
บทที่ 8 ฟิลด์คลาสซิงเกิลและอินสแตนซ์เริ่มต้น
- singletons.dpr
- singletons.dproj
- singletonsmainf.pas
- Singletonsmainf.dfm
- singletonclasses.pas
- singletonlocal.pas
- singletonclassprop.pas
- singletonlazy.pas
บทที่ 12. คอลเลกชัน
- CollectionStest.dpr
- CollectionStest.dproj
- CollectionsMainf.pas
- CollectionsMainf.dfm
บทที่ 13 การประมวลผลการรวบรวมแบบขนาน
ตอนที่ 3. เฟรมเวิร์กหลัก
บทที่ 16. การทำให้เป็นอนุกรม
- serialization.dpr
- serialization.dproj
- serializationMainf.pas
- serializationMainf.dfm
บทที่ 17. System.net
- netlient.dpr
- netlient.dproj
- NetClientMainf.pas
- NetClientMainf.dfm
บทที่ 19. อินดี้
- indy.dpr
- indy.dproj
- Indymainf.pas
- Indymainf.dfm
บทที่ 20. พักผ่อน
- restdemo.dpr
- restdemo.dproj
- restmainf.pas
- restmainf.dfm
บทที่ 21 การแสดงออกปกติ
ตอนที่ 5 กราฟิกและการประมวลผลภาพ
บทที่ 27. การบริโภคทรัพยากร
- Resources.dpr
- Resources.dproj
- ResourcesMainf.pas
- ResourcesMainf.dfm
บทที่ 30 ตัวอย่างกราฟิก VCL
- images.dpr
- images.dproj
- imagesmainf.pas
- imagesmainf.dfm
ตอนที่ 6. เฟรมเวิร์กที่กำหนดเอง
บทที่ 33. การบันทึก
- nx.log.pas
- Logging.dpr
- Logging.dproj
บทที่ 34. โทเค็นการยกเลิก
- nx.tokens.pas
- tokens.dpr
- tokens.dproj
- tokensmainf.pas
- tokensmainf.dfm
บทที่ 35
- nx.horizon.pas
- Horizon.dpr
- Horizon.dproj
- horizonmainf.pas
- horizonmainf.dfm
บทที่ 36. ประสิทธิภาพการวัด
- nx.chronos.pas
- Zerothread.dpr
- Zerothread.dproj
หมายเหตุ: วัตถุประสงค์ของตัวอย่างที่นำเสนอคือการแสดงรหัสและปัญหาที่ไม่ต้องการเธรดที่อาจเกิดขึ้นในรหัสดังกล่าวหรือเพื่อแสดงรูปแบบการเข้ารหัสทั่วไปเพื่อให้ได้รหัสเธรดที่ปลอดภัยในขณะที่หลายเธรดกำลังทำงานอยู่ เช่นนี้หลายคนไม่ได้ใช้การทำความสะอาดที่เหมาะสมในการปิดแอปพลิเคชันและหากคุณปิดแอปพลิเคชันก่อนที่จะเริ่มงานพื้นหลังหรือเธรดเสร็จสิ้นงานของพวกเขาแอปพลิเคชันอาจผิดพลาด
ในการดำเนินการปิดระบบที่สะอาดคุณอาจต้องรองานหรือการทำเธรดให้เสร็จสิ้นหรือใช้กลไกอื่น ๆ ที่จะป้องกันการเข้าถึง GUI หรือข้อมูลอื่น ๆ ที่ใช้ร่วมกันในระหว่างการปิดแอปพลิเคชัน
คุณสามารถค้นหาตัวอย่างเกี่ยวกับวิธีการปิดแอปพลิเคชันใน https://github.com/dalijap/code-delphi-async บทที่ 35.2 การทำความสะอาดเกี่ยวกับการทำลาย GUI