concurrenty และ chultitions เป็นแนวคิดหลักในวิทยาการคอมพิวเตอร์ที่ช่วยให้วิศวกรสามารถสร้างโปรแกรมที่เร็ว ตอบสนองได้ และสามารถแก้ปัญหาได้
อะไร คือ ความ ไม่ แน่นอน?
ความถี่หมายถึงความสามารถของระบบที่จะจัดการหลายงานทับซ้อนในช่วงเวลาต่าง ๆ ไม่ได้หมายความว่างานจะดําเนินการในขณะเดียวกัน (FLT: 0) ชั่วคราว (FLT: 0) parallism [FLT: 1) แต่แทน ที่จะเป็นระบบสามารถทําความคืบหน้ากับงานหลายงานได้โดยการร่วมมือกันของงาน contricy จะปรับปรุงผ่านการบังคับและตอบสนองได้โดยเฉพาะอย่างยิ่งในโปรแกรม I/Ot-Ocutation หรือแบบโต้ตอบ
ความถี่สามารถบรรลุได้ด้วยกลไกหลาย ๆ อย่าง
- [FLT: 0]. minutethdition – เส้นด้ายหลายเส้นภายในกระบวนการเดียว.
- [FLT: 0]. ไมโครโปรเซส – กระบวนการหลาย ๆ กระบวนการที่อาจจะทํางานบนแกน CPU ต่างหาก
- [FLT: 0] โปรแกรม [FLT: 1] – การดําเนินงานแบบไม่บล็อค ทําให้มีเธรดเดี่ยวจัดการงานได้ (เช่น การเรียกกลับ, อนาคต หรือ async/awawated).
การเข้าใจถึงวิธีการแลกเปลี่ยนระหว่างวิธีการเหล่านี้ เป็นทักษะพื้นฐานสําหรับวิศวกร
สําหรับการดําน้ําลึกเข้าไปในแบบจําลองความต่อเนื่อง พิจารณาการอ่าน [FLT: 0] บทความวิกิเพเดเชียเกี่ยวกับความต่อเนื่อง .
การเข้าใจการอ่านแบบหลายแบบ
การอ่านแบบหลาย ๆ แบบ เป็นวิธีการเฉพาะของความต่อเนื่อง ที่โพรเซสเดี่ยวจะก่อให้เกิดหลาย ๆ เธรดที่มีพื้นที่หน่วยความจําร่วมกัน แต่ละเธรดมีตัวนับและตัวนับโปรแกรมของมันเอง แต่ทุกเธรดภายในกระบวนการ สามารถอ่านและเขียนเพื่อใช้หน่วยความจําร่วมกันได้ การใช้ร่วมกันนี้ทั้งกําลังและความเปราะบาง
แง่ มุม สําคัญ ของ การ อ่าน หลาย เรื่อง รวม ถึง:
- [FLT: 0] การสร้างสรรค์และการจัดการ – เส้นด้ายสามารถถูกสร้างขึ้นได้อย่างตรงไปตรงมา หรือจัดการโดยสระด้ายเพื่อหลีกเลี่ยงการครอบงํา
- [FLT: 0] Thoad Lifesycle - – ระบุว่าเป็นใหม่, วิ่งได้, บล็อก, รอ, รอคอย, รอคอย, และยุติการทํางาน.
- [FLT: 0] เปลี่ยน – OS สลับไปมาระหว่างเธรด ทําให้เกิดการครอบงําบางส่วน
- [FLT: 0] ทรัพยากรที่ถูกตัด – โครงสร้างข้อมูล,ไฟล์, และการเชื่อมต่อ ต้องได้รับการคุ้มครองจากการเข้าถึงแบบถอดความจุ
การอ่านหลายแบบมีประโยชน์มากสําหรับงานที่มี CPU อยู่ด้วย ซึ่งสามารถจะขนานกันได้ (เช่น การประมวลผลภาพ, การจําลองทางวิทยาศาสตร์) และงาน I/O ที่งานหลักซึ่งเธรดสามารถรอข้อมูล ในขณะที่คนอื่นทํางานต่อ (เช่น เว็บเซอร์เวอร์) อย่างไรก็ตาม การใช้ไม่ถูกต้อง สามารถนําไปสู่การหลอกได้โดยไม่ถูกต้องเช่น สภาพการเหยียดผิว, ล็อกล็อค, และสถานะที่ไม่สอดคล้องกัน
สําหรับคําแนะนําที่ถูกต้องเกี่ยวกับจาวา การอ่านหลายเล่ม [FLT: 0] บทความเกี่ยวกับ "ความไม่ต่อเนื่องของวาวา" เป็นทรัพยากรที่ยอดเยี่ยม
ความแตกต่างของกุญแจระหว่างความไม่คงตัวและการอ่านแบบหลาย ๆ แบบ
โต๊ะ ข้าง ล่าง เน้น ความ แตก ต่าง หลัก (ใช้ รายการ อักขระ):
- [FLT: 0] คอนคอร์เรชัน เป็นคุณสมบัติของระบบ - สามารถจัดการงานหลายอย่างได้พร้อมกัน อาจจะประสบความสําเร็จผ่านทางหลายระบบ การปรับเปลี่ยนหลายรูปแบบ โพรเซส หรือเทคนิคเชิงอนิจกรรม
- [FLT: 0]. มัลติทรีทรีรีทรีวิว เป็นเทคนิคโปรแกรมที่ใช้หลายเธรดภายในกระบวนการเดียว เพื่อบรรลุความสอดคล้อง
- ความมั่นคงเน้นไปที่โปรแกรมที่ช่วยสร้างโปรแกรม เพื่อจัดการงานหลายงานในเวลาเดียวกัน ในขณะที่การอ่านหลาย ๆ ครั้งเป็นรายละเอียดการจัดระดับต่ํา
- การ อ่าน หลาย ครั้ง เกี่ยว ข้อง กับ การ มี ความ จํา ร่วม กัน ซึ่ง เป็น การ แนะ นํา ให้ รู้ จัก ข้อ ท้าทาย ต่าง ๆ เช่น สภาพ เชื้อ ชาติ และ ความ จํา ที่ เสมอ ต้น เสมอ ปลาย.
- ระบบสามารถเรียกกลับได้โดยไม่ต้องใช้เธรดทั้งหมด (เช่น โปรแกรมขับขี่เหตุการณ์ด้วยเธรดเดียว)
- ความคล้ายคลึงที่แท้จริงต้องการ CPU หลายแกน แต่ความสอดคล้องสามารถจําลองได้ ด้วยแกนเดียวผ่านเวลาตัด
คํา ถาม ที่ ผู้ คน ทั่ว ไป ถาม เกี่ยว กับ วิศวกร และ การ อ่าน หลาย เรื่อง
นัก วิศวกร มัก จะ ถูก ทดสอบ ด้วย ความ สามารถ ของ ตน ที่ จะ หา เหตุ ผล เกี่ยว กับ โครงการ ที่ ทํา ซ้ํา แล้ว ซ้ํา อีก และ รหัส ที่ อ่าน หลาย ครั้ง.
1. คุณป้องกันสภาวะเชื้อชาติได้อย่างไร?
กลยุทธ์ ป้องกัน รวม ถึง:
- [FLT: 0] มัททีเซส (ล็อค)[FLT: 1) – แน่ใจว่ามีเธรดเพียงเส้นเดียวที่สามารถเข้าสู่ช่วงวิกฤตได้ทีละส่วน
- [FLT: 0] Semaphores – การควบคุมการเข้าถึงแหล่งทรัพยากร จํากัด
- [FLT: 0] ปฏิบัติการแบบกึ่งจุ – ใช้คําสั่ง CPU-ระดับ (เช่น เทียบ-และสวาป) เพื่อปรับปรุงข้อมูล
- [FLT: 0] ล็อกแบบอ่านได้ [FLT: 1] – อนุญาตให้อ่านแบบถอดไพ่ได้ แต่เขียนเฉพาะ
- [FLT: 0] วัตถุที่แยกได้ – แบ่งข้อมูลที่แก้ไขไม่ได้ กําจัดเชื้อชาติทั้งหมด
- [FLT: 0]. จัดเก็บข้อมูลภายใน – ให้ข้อมูลสําเนาของแต่ละเธรดเอง.
ตัวเลือกของกลไกขึ้นอยู่กับธรรมชาติ ของทรัพยากรที่ใช้ร่วมกัน และคุณลักษณะของการทํางานที่จําเป็น
2. ล็อก คือ อะไร และ จะ หลีก เลี่ยง ได้ อย่าง ไร?
เดดล็อคเป็นสถานการณ์ที่แต่ละเธรดหรือมากกว่า รอคอยทรัพยากรที่ซ้อนทับกันโดยอีกเธรดหนึ่ง ทําให้ทั้งหมดหยุดชะงักอย่างไม่มีที่สิ้นสุด เงื่อนไขคลาสสิกสําหรับล็อคคือ: การตัดการเชื่อมต่อระหว่างกัน การรอ การรอ ไม่รอ การรอ และรอแบบวงกลม
- [FLT: 0] ลําดับลําดับการสืบพันธุ์ – กําหนดลําดับทรัพยากรทั่วโลก และต้องการเส้นด้ายเพื่อรับล็อคตามลําดับดังกล่าว
- [FLT: 0] Timeouts – ปล่อยล็อคหลังจากช่วงเวลาหนึ่งและทําอีกครั้ง
- [FLT: 0] ตรวจพบดีล็อค – อนุญาตให้ล็อคตายเกิดขึ้น แต่มีการกลไกในการทําลายมัน (เช่น การทําลายเส้นด้าย).
- [FLT: 0] โปรแกรมฟรี Lock-free - ใช้ปฏิบัติการปรมาณูเพื่อหลีกเลี่ยงล็อคทั้งหมด
นัก ประดิษฐ์ ควร ออก แบบ แบบ แบบ ล็อก ที่ จับ ได้ และ ทดสอบ ความ ร่วม มือ อย่าง หนัก เพื่อ จับ ล็อก ที่ อาจ จะ ตาย ได้.
3. การประสานด้ายจะมีผลกระทบอย่างไร?
การปรับเทียบข้อมูล มั่นใจข้อมูลความสอดคล้องกัน แต่แนะนําค่าใช้จ่ายที่สําคัญคือ
- [FLT: 0] กักกัน - เมื่อหลายเส้นด้ายพยายามคว้ากุญแจอันเดิม พวกมันต่อเนื่องการประหารชีวิต ลดความคล้ายคลึงกัน
- [FLT: 0] เปลี่ยน – เธรดที่บล็อกที่ล็อคบังคับให้ OS เปลี่ยนบริบทซึ่งแพง
- [FLT: 0] Cache curerience – การแบ่งปันข้อมูล mulabled changes cPU ไม่ถูกต้อง การจราจรหน่วยความจําเพิ่มขึ้น
- [FLT: 0] – ล็อกแบบหยาบ (E.E. lock) ง่ายขึ้น (เช่น ล็อคโลกแบบเดียว) ลดรูปความถูกต้อง แต่จํากัดความไม่ต่อเนื่อง; ล็อกดี (เช่น กุญแจเปิด) ปรับความเหลื่อมล้ํา แต่เพิ่มความซับซ้อนและความเสี่ยง
กลยุทธ์สมัยใหม่เช่น การลอกกุญแจ การเขียนและโครงสร้างข้อมูลซ้ํา (เช่น [FLT: 0] ช่วยสมดุลความปลอดภัยและความเร็ว
4. อธิบาย คําสําคัญใน Java/C. มันแก้ปัญหาอะไร?
[FLT: 2] คําสําคัญต่าง ๆ ทําให้แน่ใจว่าค่าตัวแปรนั้น จะถูกอ่านจากและเขียนมายังหน่วยความจําหลักเสมอ ป้องกันการเคลื่อนตัวของเธรดภายใน (help) มันแก้ปัญหาการมองเห็นได้: การเขียนตัวแปรที่ผันผวน จะสามารถมองเห็นไปยังเธรดทั้งหมดได้ทันที อย่างไรก็ตาม [FLT: 3] Do not [FTLT: 1] รับประกันความจุ ปรมาณูสําหรับสารประกอบ (เช่น [FT: 4] ) มีประโยชน์สําหรับระบุสถานะที่จะใช้ในการบังคับการประมวลผล
5 อะไรคือสระด้าย และเมื่อไหร่คุณควรใช้
สระว่ายน้ําแบบมีเธรดเป็นชุดของเธรดที่ถูกสร้างขึ้นก่อนการสร้างเธรดที่สามารถใช้ซ้ําได้กับงานต่าง ๆ ผลประโยชน์ต่าง ๆ รวมไปถึงการลดค่าประกอบการจากการสร้างเธรดและการย่อยสลายตัว, เวลาตอบสนอง, และการใช้ทรัพยากรที่ควบคุมได้ดีขึ้น สระว่ายน้ําเป็นเลิศสําหรับจัดการงานแบบสั้นหรืองาน l/ O ที่ให้บริการการขอแบบ HTTP การใช้งานทั่วไปรวม [FLT: 5] ในจาวา และ [FLT: 6] ในภาษาไพธอน พ.ศ.
ต้องดูเพิ่มขนาดสระให้เหมาะสม: มีเธรดน้อยเกินไป ที่ปรับระดับแกน CPU ในขณะที่มีสาเหตุมากเกินไป
6 พระราชบัญญัติของอัมดาห์ลคืออะไร และทําไมมันจึงสําคัญต่อการแสดงหลายแบบ
กฎของอัมดาห์กล่าวว่า การเพิ่มความเร็วของโปรแกรมโดยใช้โปรเซสเซอร์หลายตัว จํากัด โดยส่วนต่างๆ ของโปรแกรม คณิต: [FLT: 0] Speedup = 1 (1 - P) + P/N (FLT: 1) โดย PSF เป็นเศษส่วนที่เรียงได้และ N เป็นจํานวนตัวประมวลผลตัวอย่าง เช่น ถ้า 10 ของรหัสมีความรวดเร็วสูงสุดต้องมีความจุลภาค คือ 10x. กฎหมายนี้เตือนให้ใช้ต่อเนื่อง (Colotiocuments). อัลกอริทึม (help). สืบค้นแบบ consons (help.
ฝึก งาน ที่ ดี ที่ สุด สําหรับ วิศวกร ที่ ทํา งาน ด้วย ความ มั่น ใจ
เพื่อเขียนโค้ดที่ทนทานและมีประสิทธิภาพสูง ปฏิบัติตามแนวทางเหล่านี้
- [FLT: 0]. preffer ระดับสูง นามธรรม[FLT: 1) – ใช้บริการการไล่ผี, สระว่ายน้ํา ด้าย และการรวบรวมสิ่งทอ แทนการจัดการด้ายดิบ
- [FLT: 0]. เก็บข้อมูลแบบถอดความ ก่อน - เลี่ยงการใช้สถานะ mublett at where can can can can can an an an at at an my imple image images หรือคัดลอก-on-เขียน
- [FLT: 0]. ขอบเขตล็อค – ล็อคเฉพาะในเวลาที่สั้นที่สุด ที่ต้องทําปฏิบัติการที่สําคัญ.
- [FLT: 0] ใช้อัลกอริทึมปลอดล็อค สําหรับปฏิบัติการง่ายๆ - ตัวแปรอะตอม และเปรียบเทียบและสวาปสามารถมีประสิทธิภาพมากกว่าล็อค
- [FLT: 0]. สืบค้นเมื่อเทียบกับความสอดคล้องที่แท้จริง - ใช้เครื่องมือทดสอบความเครียดและเครื่องป้องกันเส้นด้ายเพื่อตรวจสอบเชื้อชาติ, เดดล็อค และข้อมูลคอร์รัปชั่น
- [FLT: 0] สัญญาการประสานแบบดอคคูเมนท์ – ระบุว่าตัวแปรใดคือ ความปลอดภัยของด้าย และกุญแจป้องกันพวกเขา
- [FLT: 0] มองเห็นทางเลือก – ตรวจนางแบบนักแสดง (เช่น อักกะ) ข้อความผ่าน หรือกระแสปฏิกิริยาเพื่อลดสถานะการใช้ร่วมกัน
ความ เข้าใจ อย่าง ละเอียด เกี่ยว กับ เวที ใต้ ดิน (เช่น, โมเดลหน่วยความจํา ของ ชวา, ด้าย โพเอส เอ็กซ์, หรือ อักษร Python GIL) เป็น สิ่ง จําเป็น สําหรับ พฤติกรรม ที่ ดีบั๊ก.
รูปแบบการวน
ความถี่และการจัดการทรัพยากรต่างๆ ไม่เพียงแต่เป็นแนวคิดทางทฤษฎีเท่านั้น มันเป็นเครื่องมือที่ใช้ได้โดยตรงที่ส่งผลกระทบโดยตรงต่อคุณภาพของซอฟต์แวร์ โดยเรียนรู้ที่จะระบุสภาพของเชื้อชาติ
สําหรับการอ่านเพิ่มเติม ดูบทความ[FLT: 0] Geegs for Geeges Profiles และคู่มือครอบคลุม Java Encurations ที่ Badaldung.