Coroutine กับ thread ต่างกันอย่างไร?
Coroutine กับ thread ต่างกันอย่างไร?

วีดีโอ: Coroutine กับ thread ต่างกันอย่างไร?

วีดีโอ: Coroutine กับ thread ต่างกันอย่างไร?
วีดีโอ: วิธีใช้ Android Coroutines บริหารแทน Threads 2024, พฤศจิกายน
Anonim

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

ด้วยวิธีนี้ Coroutines ทำงานอย่างไรบนเธรดที่ต่างกัน

Coroutines ไม่มีอะไรจะ ทำ กับ กระทู้ . Coroutine วิธีการ สามารถ ถูกดำเนินการทีละชิ้นเมื่อเวลาผ่านไป แต่กระบวนการทั้งหมดยังคงทำโดย main เดียว เกลียว . หากคุณมี CPU แบบลอจิคัลมากกว่าหนึ่งตัว หลายกระทู้ ถูกประหารชีวิตเมื่อ แตกต่าง ซีพียู

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

อีกอย่างที่ต้องรู้คือ Coroutine ทำงานบนเธรดใหม่คืออะไร?

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

ฉันควรใช้ runBlocking เมื่อใด

จริงๆแล้วคุณ ใช้ runBlocking เพื่อเรียกใช้ฟังก์ชันระงับในโค้ด "การบล็อก" ที่มิฉะนั้นจะไม่สามารถเรียกได้ที่นั่นหรือกล่าวอีกนัยหนึ่ง: คุณ ใช้ เพื่อเรียกใช้ฟังก์ชันระงับนอกบริบท coroutine (ในตัวอย่างของคุณ บล็อกที่ส่งผ่านไปยัง async คือฟังก์ชันระงับ)

แนะนำ: