‫ยินดีต้อนรับกลับ.
‫ในวิดีโอนี้ ฉันอยากจะพูดถึงการเข้าร่วมและมีชีวิตอยู่
‫ดังนั้น join จึงเป็นวิธีการที่ thread หรือ thread class มี และเราสามารถใช้ได้และมีชีวิตเป็นคุณสมบัติที่มี
‫มาสร้างเธรดที่นี่หรือสองเธรดจริง ๆ และฉันได้สร้างสองวิธีเช่นกัน เธรด หนึ่งฟังก์ชันและเธรดที่จะทำงาน
‫และสิ่งที่พวกเขาทำก็แค่บอกว่าพวกเขาได้เริ่มต้นแล้ว
‫ดังนั้นฟังก์ชันที่สามจึงเริ่มต้นขึ้นและเธรดเพื่อทำงานเริ่มทำงาน
‫ดังนั้นตอนนี้คุณสามารถดำเนินการต่อและคัดลอกหรือสร้างตัวเองอย่างรวดเร็วจากนั้นคุณสามารถดำเนินการต่อได้
‫ในที่นี้ฉันจะบอกว่าเธรดโดเมนเริ่มต้นและในตอนท้ายจะบอกว่าเธรดหลักสิ้นสุดแล้ว
‫จนถึงขณะนี้ยังไม่มีอะไรใหม่
‫หากเราเริ่มด้วย Control Five คอนโซลจะยังคงทำงานอยู่
‫เธรดหลักเริ่มต้นและเธรดหลักสิ้นสุด
‫กดปุ่มใดก็ได้เพื่อดำเนินการต่อ
‫ตกลง.
‫คุณจะเห็นว่ามันเริ่มต้นและจบลง และมันเกิดขึ้นจริง อย่างรวดเร็วจริงๆ
‫เลยไม่มีอะไรเกิดขึ้นมากนักที่นี่
‫ทีนี้มาเปลี่ยนกัน
‫มาสร้างเธรดในนั้นกันเถอะ
‫เรามาสร้างเธรดใหม่ที่เรียกว่าเธรดที่หนึ่ง
‫ด้ายเลย
‫และเพื่อที่จะใช้เธรด เราจำเป็นต้องปรับใช้โดยใช้เธรดของระบบ
‫ตอนนี้เราก็ใช้ thread ได้แล้ว ผมจะเรียกมันว่า thread หนึ่ง
‫และสิ่งที่จะทำก็คือมันจะเป็นเธรดใหม่ที่เรียกใช้ฟังก์ชันเธรดหนึ่งหรือฟังก์ชันเธรดหนึ่ง
‫ดังนั้นการจะรันโค้ดนี้ที่นี่ มันจะเรียกเมธอดนี้
‫และต่อไป อีกเธรดหนึ่ง ฉันจะเรียกมันว่าเธรดที่สอง ซึ่งก็จะเป็นเธรดด้วย และที่นี่เธรดที่จะทำงาน
‫อย่างที่คุณเห็น มีการโอเวอร์โหลดเธรดเริ่มต้น การเริ่มเธรดแบบกำหนดพารามิเตอร์ และการเริ่มเธรด
‫สิ่งที่เราทำก็คือการเริ่มหัวข้อนี้เท่านั้น
‫ดังนั้นเริ่มต้นคือผู้รับมอบสิทธิ์การเริ่มเธรดที่แสดงถึงวิธีการที่จะเรียกใช้เมื่อเธรดเริ่มดำเนินการ
‫นี่จึงเป็นวิธีการของเรา
‫ดังนั้นฟังก์ชันหนึ่งหรือสามของเธรดนี้ ซึ่งไม่ใช่เมธอดจริงๆ แต่เป็นฟังก์ชันเพราะไม่อยู่ในคลาสเชิงวัตถุ
‫แต่อย่างไรก็ตาม ไปข้างหน้าและสร้างฟังก์ชันนั้น
‫อย่างที่คุณเห็น คุณไม่จำเป็นต้องมีวงเล็บปีกกา เพราะจริงๆ แล้วเราไม่ได้เรียกมันว่าตัวแทนที่นี่
‫ไม่เป็นไร.
‫ต่อไป สิ่งที่เราต้องทำคือเพียงแค่เริ่มชุดข้อความเหล่านั้น
‫เรามาเริ่มกันที่เธรดหนึ่งจุดและเธรดเพื่อเริ่มต้น
‫และฉันจะกดปุ่มควบคุม f ห้าเพื่อเริ่มต้น และดูเธรดหลักเริ่มต้น เธรดหลักสิ้นสุด เธรดหนึ่งฟังก์ชันเริ่มต้น
‫และฟังก์ชันที่สามเริ่มทำงาน
‫ดังนั้นพวกเขาจึงไม่สิ้นสุดเพราะเรายังไม่ได้ใช้ข้อความสิ้นสุดใด ๆ
‫ทีนี้มาลองใช้วิธีการร่วมกันกับสองเธรดนี้กัน
‫ดังนั้นเธรดหนึ่งจุดเข้าร่วมและลองมาดูกันว่ามีอะไรเข้าร่วมกับเราบ้าง
‫Joint บล็อกเธรดที่เรียกจนกว่าสีแดงที่แสดงโดยอินสแตนซ์นี้สิ้นสุดลงในขณะที่ดำเนินการ
‫com มาตรฐานและส่งข้อความปั๊มต่อไป
‫สิ่งที่เราจะทำคือเพียงแค่ com หรือเข้าร่วมสองเธรดนั้น
‫ดังนั้น เธรดนี้ที่มีเธรดหลัก นั่นคือสิ่งที่วิธีการร่วมนี้ทำ และจะบล็อกเธรดหลักสำหรับเวลานั้น
‫เลยเรียกตามกระทู้หลัก
‫นั่นเป็นสาเหตุที่บล็อกเธรดหลัก
‫ดังนั้นจึงเรียกโดยทั่วไปว่าการบล็อกเธรดที่เรียก
‫และในกรณีของเรา เธรดการโทรคือเธรดหลัก เนื่องจากเราอยู่ภายในเธรดหลักเมื่อเราเรียกใช้
‫ดังนั้นสิ่งที่เราทำนั้นก็เข้าร่วมเธรดที่สองด้วย
‫ดังนั้นเราจึงรวมสิ่งนี้กับสองคนนั้นและเขียนบางอย่างลงบนคอนโซล
‫CW และสมมุติว่าเธรดหนึ่งทำงานเสร็จแล้ว
‫และทำเช่นเดียวกันกับอันที่สอง
‫ลองเรียกใช้อีกครั้งและไม่มีอะไรเกิดขึ้นจริง
‫ให้ฉัน
‫กด Controller ห้า เพื่อให้คอนโซลของฉันยังคงทำงานอยู่
‫เธรดหลักเริ่มฟังก์ชันที่สามเริ่มทำงาน
‫และที่นี่ควรเรียกว่าเธรดเพื่อทำงาน
‫ตกลง ตอนนี้เราบอกว่าเธรดที่หนึ่งและเธรดที่สองเสร็จสิ้นแล้วและหลังจากนั้นจะทำเฉพาะเธรดหลักเท่านั้น
‫ไม่มีอะไรหรูหรา ไม่มีอะไรใหม่
‫มันเพิ่งรันสิ่งที่ dev ทีละขั้นตอน
‫นั่นคือลักษณะที่ปรากฏที่นี่
‫แต่แล้วมาทำอะไรที่น่าสนใจกัน
‫มาเพิ่มการนอนที่นี่กันเถอะ
‫ที่จริงเรามาทำให้เธรดอยู่ในโหมดสลีปเป็นเวลา 3 วินาที
‫ดังนั้นเธรดสลีป 3000 มิลลิวินาที
‫และสิ่งที่จะทำก็คือวิธีนี้จะบอกว่าวิธีการนั้น เธรดเริ่มต้น จากนั้นจะรอ
‫3 วินาที
‫ทีนี้ลองรันใหม่อีกครั้ง และลองรันอีกครั้งด้วยการควบคุม f five
‫ดังนั้นที่นี่ ฟังก์ชัน เริ่มเลย
‫และหลังจากนั้นครู่หนึ่ง เธรดหนึ่งฟังก์ชัน
‫เสร็จแล้ว.
‫ขอผมทำซ้ำว่าจริงอย่างรวดเร็ว
‫ดังนั้นอันที่สามและเพื่อเริ่มต้น และหลังจากนั้น 3 วินาที คุณจะเห็นว่าฟังก์ชันที่สามเสร็จสิ้น ฟังก์ชันที่สามเสร็จสิ้นแล้ว
‫และเธรดหลักสิ้นสุด
‫ดังนั้นเธรดหลักจึงรอจนกว่าเธรดหลักหรือเธรดที่สามจะเสร็จสิ้น
‫และที่เกิดขึ้นเพราะเราเข้าร่วมที่นี่
‫เราเข้าร่วมเธรดที่หนึ่งแล้วพูดว่า ได้โปรดรอจนกว่าเราจะทำเสร็จ
‫ทีนี้ถ้าเราดูวิธีการร่วมกัน มีสิ่งที่น่าสนใจอื่นที่ต้องพิจารณา
‫มีการโอเวอร์โหลดหลายอย่าง ดังนั้นอย่างที่คุณเห็น มีเพียงพารามิเตอร์เดียวหรือไม่มีพารามิเตอร์ที่นี่หรืออาร์กิวเมนต์ที่เราให้ไว้
‫แต่มีหลายพารามิเตอร์
‫ดังนั้นเราจึงสามารถเพิ่มอาร์กิวเมนต์อื่นได้ที่นี่ ซึ่งเป็นเวลาที่เราต้องการรอก่อนที่เราจะดำเนินการต่อ
‫ในที่นี้ ฉันจะใช้ถ้า thread dot เป็นอันที่สามที่ join กินเวลาที่กำหนด และคุณสามารถเห็นการหมดเวลาเป็นมิลลิวินาที
‫สมมติว่าเรารอ 1/2 และเราจะให้เธรดนี้ยุติ 1/2 และถ้ามันทำอย่างนั้นภายในเวลาที่เราบอกว่าเธรดหนึ่งทำงานเสร็จแล้ว
‫มิฉะนั้นเราจะพูดบางอย่างเช่นฟังก์ชันเธรดหนึ่งไม่เสร็จภายใน 1 /2.
‫เอาล่ะ เรามากำจัดข้อนี้กัน และแทนที่โค้ดทั้งหมดด้วยนี่กัน
‫เลยลองเรียกใช้อีกครั้ง
‫ควบคุมห้า.
‫ดังนั้นฟังก์ชั่นหน้าหนึ่งในสามจึงไม่เสร็จภายใน 1/2 เธรดเพื่อทำงานเสร็จ เธรดหลักสิ้นสุด
‫อย่างที่คุณเห็น มันไม่ได้ทำภายในระยะเวลาที่กำหนด
‫แต่ตอนนี้ขอเพิ่มรหัสอื่นที่นี่เพราะเราไม่เคยเห็นกระทู้นี้
‫เสร็จไปหนึ่งฟังก์ชัน
‫มาเพิ่มฟังก์ชันของเธรดหนึ่งที่กลับมาที่ main กันดีกว่า
‫นั่นหมายความว่ามันเสร็จแล้วสวยมาก
‫หรืออาจจะไม่เป็นหลัก
‫แต่สำหรับสี ให้เรียกใช้อีกครั้งด้วยตัวควบคุมห้า
‫ดังนั้นการคุกคามต่อฟังก์ชั่นจึงเริ่มต้นขึ้น ให้ฉันเรียกมันอีกครั้งเหมือนตอนที่ภัยคุกคามหลักของ OC สิ้นสุดลง และจากนั้นคุณจะเห็นหลังจากเวลานั้นเท่านั้น
‫ดังนั้นหลังจากผ่านไป 3 วินาทีมันบอกว่าฟังก์ชันที่สามจะกลับมาเป็นสี
‫ดังนั้นภัยคุกคามหลักได้เสร็จสิ้นลงแล้วและกลับมาเป็นสีเดิมซึ่งเป็นภัยคุกคามหลัก
‫เมื่อถึงตอนนั้นก็ถึงบรรทัดที่ 30 หรือจริงๆ แล้วหลังจากนั้น
‫ดังนั้นมันจึงเสร็จสิ้นด้วยวิธีการหลัก และจากนั้นก็เรียกใช้โค้ดนี้ที่นี่เท่านั้น
‫อย่างที่คุณเห็น มันบล็อกเธรดหลักเพียง 1/2
‫มันไม่ได้ปิดกั้นภัยคุกคามหลักจนกว่าจะเสร็จสิ้น
‫ดังนั้นมันจึงบอกว่าบล็อกเธรดที่เรียกจนกว่าเธรดที่แสดงโดยอินสแตนซ์นี้สิ้นสุดลงหรือหมดเวลาที่ระบุในขณะที่ดำเนินการแสดงความคิดเห็นแบบคงที่และรวมการสูบน้ำต่อไป
‫ที่คุณเห็นอยู่นี้คือ คุณสามารถพูดว่า โอเค เธรดหลัก โปรดรอ 1/2 และถ้ามันไม่เกิดขึ้น
‫หรือถ้าอันที่สามไม่เสร็จสิ้น มันก็จะดำเนินต่อไป
‫ดังนั้นมันจะเข้าร่วมเธรดที่สองแล้วก็แค่บอกว่า โอเค ฉันเสร็จแล้ว ภัยคุกคามหลักของเธรดเสร็จสิ้นแล้ว
‫และฟังก์ชั่นเธรดหนึ่งยังคงทำงานอยู่ หรือเธรดที่หนึ่งยังคงทำงานอยู่ และยังคงอยู่ในโหมดสลีปและรันโค้ดหลังจากนั้น
‫.
‫แต่มันทำไม่ทันอย่างที่คุณเห็นที่นี่
‫ดังนั้นเธรดหลักจึงไม่รออีกต่อไป
‫มันแค่บอกว่า โอเค ฉันจะไป ฉันจะไปต่อโดยไม่มีคุณ
‫นั่นคือสิ่งที่เกี่ยวกับการเข้าร่วมเธรด
‫คุณสามารถดูได้ที่นี่ นั่นคือวิธีการทำงาน
‫ทีนี้มาดูว่านี่คืออสังหาริมทรัพย์
‫ดังนั้นหากเธรดที่หนึ่งยังมีชีวิตอยู่จึงมีคุณสมบัตินี้และอย่างที่คุณเห็นได้รับค่าที่ระบุสถานะการดำเนินการของเธรดปัจจุบัน
‫ซึ่งหมายความว่าเธรดเสร็จสิ้นหรือไม่เสร็จ
‫ดังนั้นมันจึงบอกว่าที่นี่ถ้าเธรดยังมีชีวิตอยู่
‫ดังนั้นหากยังทำงานอยู่ในจุดที่รันโค้ดนี้ ให้ทำบางอย่าง
‫ดังนั้นฉันจะเขียนบางอย่างเช่นเธรดที่หนึ่งยังคงทำสิ่งต่าง ๆ ดังนั้นมันยังคงรันและรันโค้ดและไม่เช่นนั้นฉันจะบอกว่าเธรดที่หนึ่งเสร็จสมบูรณ์ดังนั้นเธรด
‫CW ที่หนึ่งเสร็จสมบูรณ์
‫ไม่เป็นไร.
‫และแน่นอน เราต้องจบสตริงตอนนี้
‫ลองตรวจสอบดูอีกครั้ง
‫และเธรดหลักสิ้นสุดลงและคอนโซลของฉันจะปิดลง
‫ให้ฉันเริ่มต้นด้วยการควบคุม f ห้าเธรดหลักที่เริ่ม เธรดหนึ่งฟังก์ชันเริ่มต้นเป็นต้น
‫จึงไม่เสร็จภายใน 1/2
‫จากนั้นฟังก์ชันเธรดที่สองก็เสร็จสิ้น
‫มันบอกว่าโอเคฉันจะไม่รออีกต่อไป
‫ด้ายหลัก.
‫ดังนั้นมันจึงรันเธรดที่สอง
‫คนที่สามยังคงทำสิ่งต่างๆ
‫ดังนั้นหมายความว่าเธรดหนึ่งยังมีชีวิตอยู่ ถูกดำเนินการ และหลังจากนั้นภัยคุกคามหลักจะสิ้นสุดลงเท่านั้น
‫ดังนั้นโค้ดนี้จึงถูกเรียกใช้ในบรรทัดที่ 38 จากนั้นฟังก์ชันเธรดหนึ่งของเราที่กลับมาเป็นสีจะถูกเรียกหรือดำเนินการ
‫ไม่เป็นไร.
‫นั่นคือสิ่งที่คุณสามารถตรวจสอบได้
‫คุณสามารถตรวจสอบ
‫ตกลง.
‫ภัยคุกคามมีชีวิตอยู่หรือไม่?
‫และจากสิ่งนั้น คุณสามารถดำเนินการต่างๆ ได้ และนั่นก็ค่อนข้างมีประโยชน์
‫ตอนนี้ สมมติว่าเราต้องการดูว่าภัยคุกคามยังคงทำสิ่งต่างๆ อยู่เป็นประจำ
‫สมมุติว่าเราใช้ a for loop ตรงนี้ และ I เท่ากับศูนย์ I ต่ำกว่า 10 I บวก บวก
‫ดังนั้นภายในลูปฉันต้องการเรียกใช้รหัสนี้
‫และสิ่งที่จะทำก็คือจะบอกว่าภัยคุกคามยังคงทำสิ่งต่างๆ อยู่ จากนั้นมันก็จะเข้าสู่โหมดสลีป
‫สมมุติว่า 300 มิลลิวินาที
‫ดังนั้นนอนเพื่อ 300 ซึ่งหมายความว่าเราจะมีการประหารชีวิตสิบครั้งก่อนที่ภัยคุกคามของเราจะเสร็จสิ้น
‫ลองดำเนินการนั้นอีกครั้ง
‫เธรดที่หนึ่งยังคงทำสิ่งต่าง ๆ เสร็จแล้ว ทำเสร็จแล้ว
‫และอย่างที่คุณเห็น มันไม่ได้ดำเนินการสิบครั้ง แม้ว่าการหลับของภัยคุกคามจะอยู่ที่นั่นเป็นเวลา 300 หรือ 3000 วินาทีและมิลลิวินาที
‫และอันนี้ใช้เวลาเพียง 300 มิลลิวินาทีเท่านั้น
‫ดังนั้นสิ่งที่มันทำคือมันรันเธรดหนึ่งเสร็จหลายครั้ง
‫อย่างที่คุณเห็นมีการทับซ้อนกันที่ฟังก์ชันเธรดจะกลับมา
‫อย่างที่คุณเห็น this for loop จะดำเนินการในภายหลังเพียงเล็กน้อยเท่านั้น
‫ลำดับจึงมีดังต่อไปนี้
‫เราเริ่มเธรดที่หนึ่ง
‫เราเริ่มต้นขวาเพื่อเริ่มเธรดที่หนึ่ง
‫รอ 1/2 คุณจะเห็นว่าเรามีการเข้าร่วม 1/2 นี้ ดังนั้นเราจึงสูญเสียการประหารชีวิตสามครั้งที่นี่
‫ซึ่งหมายความว่าเธรดนี้ที่ยังคงทำสิ่งต่าง ๆ นั้นจริง ๆ แล้วดำเนินการเพียงหกครั้งที่นี่หรือเจ็ดครั้ง
‫แล้วฟังก์ชัน thread one ก็กลับมาเพราะมันเริ่มทำงาน
‫จากนั้นก็รอ 1/2
‫ไม่มีอะไรเกิดขึ้นแล้ว
‫จากนั้นจึงเริ่มทำสิ่งสวยงามทั้งหมดนี้
‫ดังนั้น เนื่องจาก for loop นี้ดำเนินการสิบครั้ง มันจะรันโหมดสลีปหลายครั้งจนกว่าจะกลับมาเป็นสี
‫และอันที่สามที่เสร็จสมบูรณ์นี้จะถูกดำเนินการอย่างรวดเร็ว
‫จึงไม่รอช้าเพราะไม่มีที่นอนอยู่ในนั้น
‫แต่โดยทั่วไปแล้วเป็นสิ่งที่คุณสามารถทำได้กับชีวิตนี้
‫โดยทั่วไปแล้วคุณสามารถตรวจสอบได้ว่ามันคือชีวิตหรือไม่?
‫มันยังมีชีวิตอยู่หรือไม่?
‫มันยังมีชีวิตอยู่และทำสิ่งต่าง ๆ ในขณะที่มันยังมีชีวิตอยู่หรือทำสิ่งอื่นในขณะที่มันยังมีชีวิตอยู่และจากนั้นไม่ทำอะไรหรืออย่างอื่นเมื่อมันทำเสร็จแล้ว
‫นั่นคือตัวอย่างพื้นฐานของการใช้ Join และยังมีชีวิตอยู่ และฉันหวังว่าคุณจะเข้าใจแนวคิดนี้
‫แล้วพบกันใหม่ในวิดีโอหน้า
‫เราจะตรวจสอบงาน