เหตุใดเธรดจึงเรียกว่าเธรด


9

ฉันเข้าใจว่ากระบวนการเป็นหน่วยของการเป็นเจ้าของทรัพยากรและคำแนะนำในการปฏิบัติการ เธรดอนุญาตให้กระบวนการแบ่งปันทรัพยากรด้วยการประมวลผลหลายครั้งและง่ายกว่าสำหรับ OS ที่จะกำหนดเวลาเธรดเนื่องจากโอเวอร์เฮดทั้งหมดที่เกี่ยวข้องกับกระบวนการทั้งหมด

แต่ทำไมด้ายชื่อ? มันมีการอ้างอิงถึงสตริงหรือ interleaving ของการดำเนินการบางอย่าง? ถึงอย่างนั้นนี่ไม่ใช่คำศัพท์ที่เข้าใจง่ายในความคิดของฉัน

คำตอบ:


11

คุณเคยดูพจนานุกรมไหม? ด้ายคำมีความหมายที่ผ่านมาการตัดเย็บ

3: บางสิ่งบางอย่างต่อเนื่องหรือดึงออก:

a: บรรทัดของการให้เหตุผลหรือฝึกความคิดที่เชื่อมโยงส่วนต่าง ๆ ในลำดับ (จากความคิดหรือเหตุการณ์)

http://www.merriam-webster.com/dictionary/thread


น่าสนใจ ฉันทำการค้นหา "define thread" แต่คำจำกัดความนั้นไม่ใช่หนึ่งในนั้น ฉันดีใจที่คุณพูดถึงเรื่องนี้เพราะมันเป็นนามธรรมพอที่จะข้ามสะพานจากการใช้งานทั่วไปไปจนถึงการเขียนโปรแกรม
Matt

9

เคยเห็นไหมว่าเกลียวหลายเส้นบิดเป็นเกลียวหนาขึ้นและแข็งแรงขึ้นได้อย่างไร

นั่นคือคำอุปมาทุกเธรดมีความเป็นอิสระ แต่เธรดทั้งหมดร่วมกันทำงานร่วมกับเอาต์พุตการคำนวณขั้นสุดท้าย นอกจากนี้ในด้ายสิ่งทอด้ายสามารถแตกโดยไม่สูญเสียโครงสร้างของสายไฟทั้งหมด

ป้อนคำอธิบายรูปภาพที่นี่


2
ในขณะที่ฉันมักจะนึกภาพ "กระทู้" เพียงคุณและ GrandmasterB อธิบายพวกเขาไม่แน่ใจเกี่ยวกับ "บิด, หนา, แข็งแรงกว่าเชือก" ทั้งหมด แต่เธรดส่วนใหญ่ในระบบปฏิบัติการจะมีลักษณะดังนี้: miqel.com/bonnaroo_2008_music/yarn_string_trips.jpg (ผู้ที่อยู่ทางด้านขวาจะเป็นตัวควบคุมหน่วยความจำ) ใช่บางครั้งบางครั้งสตริงเหล่านั้นมีวัตถุประสงค์เพื่อแก้ไขปัญหาที่พบบ่อย แต่ส่วนใหญ่จะเป็น อยู่ที่นั่นและระบบปฏิบัติการช่วยให้พวกเขาทำสิ่งที่พวกเขาต้องการ (ด้วยเหตุผล)
DXM

7

tl; dr:พวกมันถูกเรียกว่า threads เพราะ "thread" เป็นคำเปรียบเทียบที่เหมาะสม


เมื่อคุณเริ่มเธรดคุณต้องพึ่งพาระบบปฏิบัติการเพื่อจัดสรรเวลาการประมวลผลเพื่อให้เธรดของคุณสามารถดำเนินการได้ ในขณะที่เธรดของคุณกำลังทำงานตัวประมวลผล (หรือแกนประมวลผล) กำลังวางความสนใจทั้งหมดไว้บนเธรดของคุณ เมื่อระบบปฏิบัติการสลับคอร์เป็นเธรดอื่นเธรดของคุณจะหยุดดำเนินการในขณะที่เธรดอื่นกำลังรับบริการ

ดังนั้นการประหารจึงกระโดดไปทั่วทุกที่ แต่ความสมบูรณ์ของชุดคำสั่งเครื่องยังคงไม่เปลี่ยนแปลงทั้งๆที่มีการกระโดดเหล่านี้เพราะเราสร้างรั้วและกลไกการทำงานพร้อมกันเพื่อปกป้องสถานะของมันและสถานะของวัตถุที่มันโต้ตอบกับ

ดังนั้นเธรดจะอ้างอิงไม่ใช่การเรียกใช้งานคำสั่งในเธรดเฉพาะใด ๆ แต่ไปยังคำแนะนำที่จะถูกดำเนินการภายในเธรดที่เราสร้างขึ้นในที่สุด ในคำอื่น ๆ แต่ละคำอาจเรียกได้ว่าเป็นเครื่องหรือเอเจนต์แต่ละตัว (เราเรียกว่ากระบวนการที่มีน้ำหนักเบา) โดยไม่ต้องคิดเกี่ยวกับสวิทช์บริบททั้งหมดที่ระบบปฏิบัติการกำลังทำงานเพื่อให้ดูเหมือนว่าพวกเขาทั้งหมด ดำเนินการพร้อมกัน

ในคำอื่น ๆ ถึงแม้ว่าการกระโดดไปรอบ ๆ ทั้งหมดที่ระบบปฏิบัติการทำอยู่เบื้องหลังสิ่งที่เราเรียกว่าเธรด (ลำดับของการดำเนินการที่เรากำลังดำเนินการในกระบวนการที่มีน้ำหนักเบา) ยังคงสามารถคิดได้ว่าเป็นการดำเนินการตามลำดับเดียวกัน ถ้าเราไม่วางไข่ในเกลียวสมมติว่าเราได้ทำการป้องกันภาวะพร้อมกันที่จำเป็น


หากคำอธิบายนี้ดูมีน้ำหนักและเป็นนามธรรมเกินไปให้นึกถึงหัวข้อในฟอรัมเช่น Reddit คุณสามารถแยกการอภิปรายใหม่ แต่ละการอภิปรายเป็นหัวข้อของตัวเอง คุณสามารถข้ามไปมาระหว่างเธรด แต่แต่ละเธรดยังคงรักษาความสมบูรณ์ของโครงสร้างไว้เช่นเดียวกับการสนทนารายบุคคล


4

มันยากที่จะแก้ให้หายยุ่ง (ปุนตั้งใจอย่างเต็มที่) แหล่งที่มาของคำว่า "กระทู้" เพราะสิ่งต่าง ๆ โคลนน้ำ

การใช้งานของการตั้งกระทู้ในฟอรั่มความรู้สึกหรืออีเมลเกือบจะแน่นอนเกิดจากวลี "หัวข้อของการสนทนา" ซึ่งตามนี้วันที่กลับมาเท่าที่ 1593

สิ่งต่าง ๆ มีความชัดเจนน้อยลงสำหรับความหมายของเธรดที่คุณถามถึงแม้ว่าตามลิงก์นี้เธรดที่เรารู้ว่าพวกเขาไม่ได้เรียกว่า "เธรด" จริง ๆ จนกระทั่ง 70s หรือ 80 ต้น ๆ แม้จะมีการใช้กระบวนการหน่วยความจำที่ใช้ร่วมกัน จริง ๆ แล้ว predating สิ่งที่เราคิดว่าเป็นกระบวนการหนาในปัจจุบัน เนื่องจากรูปแบบที่เกี่ยวข้องของการใช้หน่วยความจำแบบมัลติโพรเซสซิงเรียกว่า "ไฟเบอร์" ฉันสงสัยอย่างยิ่งว่าคำว่า "เธรด" นั้นน่าจะชวนให้นึกถึงผ้าทอหรือสิ่งทออื่น ๆ ที่เกี่ยวข้อง


3

ฉันคิดว่ามันเกี่ยวข้องกับ 'thread of reasoning' หรือ 'thread of thought'

ในทางตรงกันข้ามกับกระบวนการที่หัวข้อแบ่งปันหน่วยความจำ ดังนั้นหากกระบวนการเปรียบกับบุคคลที่มีความคิดของเขา / เธอเอง (ความจำ) เธรดสามารถเปรียบเทียบได้กับความคิดหนึ่งบรรทัดภายในจิตใจนั้น


1

ฉันอ่านความคล้ายคลึงของเธรดในการเขียนโปรแกรมคิดว่า CPU เป็นเข็มเย็บผ้าและเธรดเป็นสตริงจริง ตอนนี้ถ้าคุณมีเข็มเย็บผ้าหลายอัน แต่มีเพียงเส้นเดียว คุณไม่คิดหรอกว่ามันจะไร้ประสิทธิภาพ ซีพียู / เข็มเย็บอื่น ๆ จะรอให้ด้ายพร้อมใช้งาน อย่างไรก็ตามหากเรามีหลายเธรดการทำงานสามารถทำได้ภายในเวลาอันสั้น


1
มีอะไรผิดปกติกับมัน? ทำไม -1
กระฉับกระเฉง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.