‫ยินดีต้อนรับกลับ.
‫ในวิดีโอนี้ เราจะพิจารณาชุดข้อความ ดังนั้น เราจะทำแนวคิดพื้นฐานของชุดข้อความ ซึ่งคุณจะเห็นวิธีสร้างชุดข้อความและวิธีสร้างชุดข้อความหลายชุด
‫มาเริ่มกันเลยโดยใช้บรรทัดขวาของคอนโซลในลักษณะเฉพาะ
‫ดังนั้น ฉันจะสร้างโลกหลาย ๆ โลก ตัวอย่างเช่น สี่โลก และฉันจะพูดว่า
‫Hello World หนึ่ง สวัสดีโลกสอง สามและสี่
‫ดังนั้นถ้าเราเปิดโลกเหล่านั้น แน่นอนว่าเราต้องการคอนโซลเส้นสีแดงก่อน เพื่อให้คอนโซลเปิดอยู่และตื่นอยู่เสมอ
‫ถ้าเราเรียกใช้มัน มันจะเป็นพื้นฐานมากว่าอะไรจะเกิดขึ้น
‫ดังนั้นพวกเขาจะพิมพ์ Hello World สี่ครั้งบนหน้าจอ
‫แล้วเราก็เป็น Hello World
‫หนึ่ง สอง สาม และสี่
‫เอาล่ะ ไม่มีอะไรใหม่
‫เราเคยเห็นมามากแล้ว แต่มีบางอย่างที่เรียกว่าเธรด คลาสที่เรียกว่าเธรด
‫และถ้าเราต้องการจะใช้ เราจำเป็นต้องใช้ threading เนมสเปซ
‫ดังนั้นการใช้ระบบ dot thread และนั่นแหล่ะ
‫ตอนนี้เราก็ใช้ thread ได้แล้ว
‫ดังนั้น ฉันสามารถดำเนินการต่อและใช้คลาสเธรด และอย่างที่คุณเห็น สร้างและควบคุมเธรด กำหนดลำดับความสำคัญและรับสถานะ
‫สิ่งที่เราทำได้ตอนนี้คือ ใช้ thread dot sleep ในระยะเวลาที่จำกัด สมมุติว่า
‫1000 มิลลิวินาที
‫ที่จะทำคือจะหยุดโปรแกรมทั้งหมดของเราหรือเธรดของเราชั่วคราว ในกรณีนี้
‫เธรดหลักหรือเธรดที่มันเป็น 1/2 หลังจากที่พิมพ์ Helloworld หนึ่งบนหน้าจอ และเราสามารถทำได้จริงหลังจากทุกคำสั่งเดียว
‫ดังนั้นฉันจะบอกว่าแค่นอนเป็นเวลาที่กำหนดแล้วเราก็เป็น
‫สวัสดีชาวโลกที่หนึ่ง สอง สามและสี่
‫ดังนั้นมันจะหยุดถ้าฉันคลิกเข้าไป
‫แต่โดยทั่วไป คุณจะเห็นว่ามันรอ 1/2 และหลังจากนั้นวินาทีนั้นก็พิมพ์ออกมาในสิ่งต่อไป
‫ดังนั้นสิ่งที่ทำก็หยุดทั้งเธรดได้จริงๆ
‫ดังนั้นระงับเธรดปัจจุบันสำหรับจำนวนมิลลิวินาทีที่ระบุหรือที่ระบุ
‫นั่นคือสิ่งที่คุณสามารถทำได้หากคุณต้องการทำอะไรหลังจากเวลาที่กำหนด
‫แต่โปรดทราบว่านี่เป็นการหยุดเธรดหลักจริงๆ
‫ดังนั้นไม่ต้องทำอะไรเลย สมมติว่าในเธรด UI สามารถทำได้
‫เราไม่ได้ใช้ UI ที่นี่ เรากำลังใช้แอปพลิเคชันคอนโซลในกรณีนี้
‫แต่ถ้าคุณใช้ WPF เช่น เพื่อให้มี UI และคุณหยุดเธรดหลักชั่วคราวเป็นเวลา 1/2 นั่นหมายความว่า UI จะไม่ตอบสนองเป็นเวลาทั้งวินาที
‫และนั่นคือสิ่งที่ผู้ใช้ไม่ต้องการ และนั่น จะเป็นพฤติกรรมที่แย่มากที่ไม่ควรทำ
‫แต่โดยทั่วไปแล้ว เป็นเพียงเพื่อให้คุณเข้าใจว่าคุณสามารถทำอะไรกับเธรดที่นี่ ใช่ไหม
‫ดังนั้นคุณจึงสามารถเป็นภัยคุกคามได้ในระยะเวลาหนึ่ง
‫แต่เราใช้เธรดเดียวเท่านั้น
‫เป็นเธรดหลักและหากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ คุณต้องแก้ไขจุดบกพร่อง
‫และเพื่อที่จะทำเช่นนั้น เราได้เพิ่มจุดที่นี่
‫ดังนั้นเพียงแค่จุดดีบักที่คุณเพียงแค่กดบนแถบนั้นทางด้านซ้าย สมมติว่าในบรรทัดที่เก้า ซึ่งเป็นที่ที่วิธีการหลักเริ่มต้นขึ้น
‫จากนั้นคุณเริ่มโปรแกรม และอย่างที่คุณเห็น จะไม่มีอะไรแสดงขึ้นเนื่องจากโปรแกรมหยุดชั่วคราวที่นี่
‫นั่นคือที่ที่เราอยู่ในปัจจุบัน นั่นคือสิ่งที่เคอร์เซอร์อยู่
‫และเพื่อที่จะดูงานในตอนนี้ เราต้องไปที่การดีบัก Windows จากนั้นเลือกเธรดที่นี่
‫หรือจะกด control alt h
‫ฉันจะเปิดกระทู้ และอย่างที่คุณเห็น ตอนนี้มันลอยอยู่ และฉันจะวางมันไว้ที่ด้านซ้ายมือ
‫และตอนนี้ คุณสามารถเห็นเธรดที่ทำงานอยู่ และในกรณีของเรา เราจะเห็นเฉพาะเธรดหลักเท่านั้น
‫ดังนั้นจึงมีเธรดเดียวเท่านั้นและมี ID ที่มีการจัดการเป็นศูนย์
‫นั่นคือหัวข้อหลักของเราและโดยทั่วไปจะทำทุกอย่างที่อยู่ภายในวิธีการหลักของเรา
‫ดังนั้นหากผมไปขั้นตอนต่อไป
‫อย่างที่คุณเห็น เรายังอยู่ในเธรดหลักและรอ 1/2
‫เราเห็นว่าโลกจริง ๆ แล้วเราเปิดมันขึ้นมาได้อย่างไร
‫คุณสามารถดูได้
‫ตอนนี้มันเป็นเรื่องราวของโลกที่สาม
‫เรานอนครึ่งชั่วโมงแล้วรอให้เราไปขั้นตอนต่อไป
‫ดังนั้นคุณจึงสามารถกด F ten เพื่อไปยังขั้นตอนถัดไป จากนั้นระบบจะแสดงสวัสดีโลกในอีกไม่กี่วินาทีต่อมา
‫ใช่ว่าเราเป็น
‫สวัสดีชาวโลกสี่
‫แล้วเส้นสีแดงนี้ขึ้นมา
‫ตอนนี้ฉันจะกดบางอย่างเช่น enter หรืออะไรก็ตาม และที่นี่ และไปที่ขั้นตอนถัดไป
‫และอย่างที่คุณเห็น เรายังอยู่ในหัวข้อหลัก
‫และโปรแกรมของเราก็ปิดลง ดังนั้นจึงไม่มีเธรดอีกต่อไป
‫นั่นเป็นสิ่งที่ดีและทั้งหมด แต่นั่นเป็นเพียงหัวข้อหลักของเราและนั่นก็น่าเบื่อเล็กน้อย
‫เราต้องการดูวิธีสร้างชุดข้อความและนั่นคือสิ่งที่เราอยู่ที่นี่
‫ไปข้างหน้าและสร้างเธรดหลาย ๆ เธรดด้วยตัวเองเพราะสิ่งที่เกิดขึ้นที่นี่คือการทำตามลำดับ
‫ดังนั้นทีละขั้นตอน ทีละแถว
‫แต่ถ้าเราต้องการทำสิ่งต่าง ๆ ควบคู่กันไป เราสามารถสร้างเธรดของเราเองได้ เพราะเราไม่ต้องการให้มันรันในเธรดหลัก
‫แต่เราต้องการรัน Parallelly
‫สิ่งที่ฉันจะทำคือ ฉันจะสร้างภัยคุกคามใหม่ที่นี่
‫ฉันแค่จะบอกว่าใหม่แล้วฉันจะเรียกมันว่าเธรด
‫ฉันแค่ใช้คลาสเธรดที่นี่ และคุณต้องการวงเล็บและวงเล็บอีกครั้ง
‫และหลังจากวงเล็บเหล่านั้น วงเล็บที่สอง และที่นี่ คุณใช้วงเล็บไซน์และวงเล็บปีกกาที่เท่ากันและใหญ่กว่า
‫และหลังจากวงเล็บปิดที่นี่ คุณต้องเริ่ม
‫นั่นคือวิธีที่คุณเริ่มเธรด
‫เลยตั้งกระทู้ใหม่ขึ้นมาทันที เพราะผมเรียก Start Here
‫เพียงวิธีการเริ่มต้นทำให้ระบบปฏิบัติการเปลี่ยนสถานะของอินสแตนซ์ปัจจุบันเป็นสถานะเธรดที่ทำงานอยู่
‫ดังนั้นเธรดนี้จะมีสถานะเธรดทำงานอยู่ ซึ่งหมายความว่ามันจะดำเนินการทุกอย่างที่อยู่ในวงเล็บปีกกาของมัน
‫นั่นคือสิ่งที่เราสามารถเพิ่มโค้ดของเราที่เราต้องการเรียกใช้เมื่อใดก็ตามที่มีการเรียกเธรดนี้
‫สมมุติว่ากระทู้นี้เป็นกระทู้ของเรา
‫ผมจะเขียนบางอย่างเช่น เธรดที่หนึ่ง, CW เธรดที่หนึ่ง และเหนือสิ่งอื่นใด ผมจะนอนพักสักครู่
‫ดังนั้นนอนเป็นเวลา 1,000 มิลลิวินาที ซึ่งเท่ากับ 1/2
‫นั่นคือสิ่งที่กระทู้นี้จะทำ
‫และสิ่งที่ผมจะทำคือ ผมจะจัดตำแหน่งหลายเธรดด้านล่างนั้น
‫ดังนั้นเธรดที่หนึ่ง สอง สามและสี่
‫ดังนั้นฉันจะเปลี่ยนชื่อเหล่านั้นและฉันจะแสดงความคิดเห็น
‫ที่เรามีมาก่อน
‫ดังนั้นคอนโซลบรรทัดขวา และตอนนี้ ให้เรียกใช้
‫และเราอยู่ที่นั่น
‫อย่างที่คุณเห็น มันมาพร้อมกันทั้งหมด
‫ดังนั้นมันจึงรอ 1/2 แล้วพวกมันทั้งหมดก็ขึ้นมาพร้อมกัน
‫แล้วเกิดอะไรขึ้นที่นั่น?
‫ขอผมเข้าไปในจุดนั้นตรงนี้ และบางทีก็ตรงประเด็น
‫ใช่ตรงนั้น
‫เลยลองเรียกใช้อีกครั้ง
‫ตอนนี้เราเห็นโปรแกรมของเราหยุดอยู่ที่นี่
‫นั่นคือสิ่งที่มันเป็น
‫แต่ในขณะเดียวกัน ในหน้าต่างเธรดที่นี่ที่ด้านล่าง คุณจะเห็นว่ามีสองเธรดที่เปิดอยู่แล้ว
‫และเธรดของผู้ปฏิบัติงานที่ไม่มีชื่อ และเธรดของผู้ปฏิบัติงานอีกคนที่ไม่มีชื่อเช่นกัน
‫ดังนั้นเราจึงมีเธรดใหม่นี้ซึ่งทำงานอยู่แล้ว และหนึ่งในเธรดอื่นก็ถูกเปิดเช่นกัน
‫และอย่างที่คุณเห็นหัวข้อหลักเช่นกัน
‫จึงมีสามเธรดพร้อมกัน
‫ตอนนี้ไปที่ขั้นตอนต่อไป
‫ดังที่คุณเห็น ณ จุดนั้น ทันใดนั้นมีสี่เธรด และนั่นคือสี่เธรดที่เรามีที่นี่
‫เมื่ออันแรกเริ่ม มีเพียงอันที่สองที่พร้อมแล้ว แต่อันอื่นยังไม่พร้อม
‫และ ณ จุดที่เธรดหลุด 1000 มิลลิวินาทีหลังจากผ่านไปหนึ่งมิลลิวินาทีหรือน้อยกว่านั้น คุณจะเห็นได้ว่าเธรดอื่นๆ
‫ได้เริ่มต้นขึ้นแล้ว
‫ดังนั้นเราจึงมีสี่เธรดที่ทำงานพร้อมกัน
‫ดังนั้นเราจึงมีวิธีแก้ปัญหาแบบหลายเธรดที่นี่
‫และถ้าฉันทำขั้นตอนต่อไป อย่างที่คุณเห็น เธรดที่สอง สาม และสี่ แสดงอยู่แล้ว แต่คอนโซลบรรทัดด้านขวาของคอนโซลอย่างที่คุณเห็น
‫ยังไม่แสดง
‫ดังนั้นพวกมันจึงทำงานคู่ขนานกัน แต่พวกมันไม่แม่นยำอย่างที่คุณเห็น
‫ดังนั้นเวลาที่ต้องดำเนินการจึงอาจต่างกันเล็กน้อย
‫ผมจะไปขั้นตอนต่อไปแถวนี้ตรงนี้
‫และอย่างที่คุณเห็นตอนนี้ เธรดที่หนึ่งก็ทำเสร็จแล้วเช่นกัน
‫ดังนั้นถึงแม้ว่าเส้นไหม
‫หรือในลำดับเฉพาะในนี้ ในรหัสของฉัน พวกเขาเริ่มต้นพร้อมกันไม่มากก็น้อย
‫และอย่างที่คุณเห็น ไม่จำเป็นต้องอยู่ในลำดับที่แน่นอนอย่างที่เราคิด
‫ดังนั้นจะไม่เสร็จสิ้นในลำดับที่แน่นอนที่เราได้วางไว้ที่นี่
‫แต่ขึ้นอยู่กับว่าพวกเขาสามารถทำงานเสร็จหรือรันโค้ดได้เร็วแค่ไหน
‫ดังนั้นจึงอาจเกิดขึ้นได้ว่ารหัสนี้ต้องยาวกว่ารหัสนั้นเล็กน้อยหรือนานกว่ารหัสอื่นมาก
‫นั่นคือสิ่งที่คุณต้องลบออกเพื่อให้คุณสามารถทำงานกับเธรดได้ แต่คุณต้องระวังให้มาก
‫ๆ เพราะอาจมีหลายอย่างที่อาจผิดพลาดได้
‫และฉันจะเล่าบางส่วนและจะแสดงให้คุณดูหรือให้คุณดู และฉันจะเล่าบางส่วนให้คุณฟัง
‫และฉันจะแบ่งปันลิงก์กับคุณด้วย ซึ่งคุณสามารถอ่านข้อมูลเพิ่มเติมได้มากมาย
‫นั่นคือแนวคิดพื้นฐานของการสร้างเธรด
‫อย่างที่คุณเห็น นั่นคือวิธีตั้งค่าต่างๆ
‫ดังนั้นเธรดจึงเป็นงานชิ้นเล็กชิ้นน้อยหรือชิ้นงานที่ถูกดำเนินการ และคุณสามารถดำเนินการหลาย
‫ๆ อย่างพร้อมกันได้หากคุณมีหลายคอร์ในโปรเซสเซอร์ของคุณ
‫สมมติว่าคุณมีโปรเซสเซอร์สี่คอร์ จากนั้นสี่เธรดหรือโปรเซสเซอร์สี่ตัวสามารถดำเนินการได้พร้อมกัน
‫ถ้าคุณมี สมมุติว่า มีเพียงโปรเซสเซอร์เดียวเท่านั้น จากนั้นให้ดำเนินการได้เพียงเธรดเดียวหรืองานเดียวในแต่ละครั้ง จะไม่เกิดขึ้นเลย
‫พวกมันจะถูกดำเนินการแบบขนานเพราะโปรเซสเซอร์ตัวนี้ทำสิ่งที่เฉพาะเจาะจงในแต่ละครั้งเท่านั้น
‫นั่นหมายความว่า ถ้าคุณรู้ว่าคุณกำลังทำงานกับโปรเซสเซอร์แบบมัลติคอร์ หรือแอปพลิเคชันของคุณจะทำงานบนโปรเซสเซอร์แบบมัลติคอร์
‫คุณสามารถทำงานกับหลายเธรดได้ มิฉะนั้น คุณจะประสบปัญหา
‫แต่โดยทั่วไปแล้ววิธีการทำงาน ถ้าคุณมีแกนเดียว เธรดหลักจะทำงานและเฉพาะในกรณีที่เธรดหลักไม่ได้ใช้งาน
‫เธรดหลักก็จะดำเนินการต่อและทำอย่างอื่น
‫ดังนั้นมันจะเรียกใช้ภัยคุกคามอื่น ๆ
‫สมมติว่าคุณมี UI และใน UI นั้น คุณเพียงแค่แสดงสิ่งต่างๆ
‫คุณมีปุ่ม
‫จากนั้นหากคุณวางเมาส์เหนือปุ่ม มันจะเปลี่ยนรูปลักษณ์ของมัน อะไรทำนองนั้น
‫นั่นคือสิ่งที่ทำโดยเธรดหลัก
‫แต่ถ้าเธรดหลักไม่ว่าง เธรดอื่นจะเริ่มขึ้น
‫ดังนั้นจะเกิดอะไรขึ้นถ้าคุณมีบางสิ่งที่ควรทำงานในเบื้องหลัง สิ่งนั้นจะเกิดขึ้นเมื่อใดก็ตามที่เธรดที่หนึ่ง
‫เธรดหลักไม่ว่างหรือเธรดเป็นศูนย์
‫จริงๆแล้วที่นี่
‫นั่นคือเรื่องของเธรด
‫แน่นอนเราจะตรวจสอบชุดข้อความให้มากขึ้น แต่โดยทั่วไปแล้ว นั่นคือสิ่งที่ฉันต้องการแสดงให้คุณเห็นในการเริ่มต้น