มีความแตกต่างระหว่างเส้นใย coroutines และหัวข้อสีเขียวและถ้าเป็นเช่นนั้นมันคืออะไร?


57

วันนี้ฉันกำลังอ่านบทความเกี่ยวกับเส้นใยเกี่ยวกับเส้นใย coroutines และหัวข้อสีเขียวบนอินเทอร์เน็ตและดูเหมือนว่าแนวคิดเหล่านี้มีเหมือนกันมาก แต่มีความแตกต่างกันเล็กน้อยโดยเฉพาะอย่างยิ่งเมื่อเราพูดถึงเส้นใยและ coroutines

มีการสรุปย่อที่ถูกต้องและกระชับในสิ่งที่ทำให้พวกเขาแตกต่างจากกันหรือไม่?

อัปเดต: ฉันพบเอกสารการแยกความแตกต่างcoroutines และเส้นใย (N4024 C ++)ดีโดยเฉพาะอย่างยิ่งที่แตกต่างระหว่างเส้นใยและ coroutines

คำตอบ:


106

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

coroutineเป็นองค์ประกอบที่ generalizes ย่อยเพื่อให้คะแนนหลายรายการสำหรับการระงับการดำเนินการและการกลับมาทำงานในสถานที่บางอย่าง ซึ่งแตกต่างจากรูทีนย่อย, coroutines สามารถออกโดยการเรียก coroutines อื่น ๆ ซึ่งอาจกลับไปยังจุดที่พวกเขาถูกเรียกใน coroutine เดิมในภายหลัง

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


13
ฉันพูดได้ด้วยตัวเองเท่านั้น - คำตอบนี้มีค่ามากสำหรับฉัน ฉันแบ่งปันความคิดเห็นกับโรเบิร์ตในเรื่องนี้
DejanLekic

"บทสรุปของหัวข้อกว้างเป็นพิเศษของ Wikipedia ซึ่งมุ่งเน้นและปรับให้เหมาะสมกับการให้เนื้อหานี้และส่งเสริมวัฒนธรรมที่มุ่งเน้นเรื่องนี้ผู้คนเต็มใจมีความสามารถและประสบการณ์ที่ดีที่สุดในการให้บทสรุปดังกล่าวไปที่ Wikipedia ไม่ใช่ Stack Exchange ... โดยทั่วไปผู้ที่มองหาสิ่งนี้ในเครื่องมือค้นหาจะแสดงตัวอย่างเนื้อหาการแข่งขันโดยตรงสองตัวอย่างหนึ่งรายการในเครือข่าย SE และอีกวิกิพีเดีย ... เนื่องจากเหตุผลที่กล่าวถึงข้างต้นจึงเป็นไปได้ว่าเนื้อหาของ SE จะดูด้อยกว่า ... "
ริ้น

หมายเหตุ coroutines และเส้นใยอาจมีการพิจารณาที่เกี่ยวข้องอย่างใกล้ชิด - อาจเป็นได้ในสิ่งเดียวกัน หากต้องการ coroutines พวกเขาสามารถดำเนินการผ่านเส้นใยด้วยความพยายามน้อยมากและในทางกลับกัน
cHao

9
ไม่อธิบายว่ามันแตกต่างกันอย่างไร คำจำกัดความทั้งหมดเหล่านี้ดูเหมือนจะเทียบเท่ากัน
hasen

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