Tôi đang đọc Kotlin Coroutine và biết rằng nó dựa trên suspend
chức năng. Nhưng suspend
nghĩa là gì?
Quy trình hoặc chức năng bị đình chỉ?
Từ https://kotlinlang.org/docs/reference/coroutines.html
Về cơ bản, coroutines là các tính toán có thể bị treo mà không chặn một chuỗi
Tôi nghe mọi người thường nói "chức năng tạm ngưng". Nhưng tôi nghĩ chính đăng quang bị đình chỉ vì chờ hết chức năng? "pause" thường có nghĩa là "ngừng hoạt động", trong trường hợp này, quy trình đăng ký không hoạt động.
🤔 Có nên nói rằng quy trình đăng quang bị đình chỉ không?
Quy trình đăng quang nào bị đình chỉ?
Từ https://kotlinlang.org/docs/reference/coroutines.html
Để tiếp tục tương tự, await () có thể là một hàm tạm ngưng (do đó cũng có thể gọi từ bên trong khối {} không đồng bộ) sẽ tạm dừng một quy trình đăng quang cho đến khi một số tính toán được thực hiện và trả về kết quả của nó:
async { // Here I call it the outer async coroutine
...
// Here I call computation the inner coroutine
val result = computation.await()
...
}
🤔 Nó nói rằng "tạm dừng một quy trình đăng ký cho đến khi một số tính toán được thực hiện", nhưng quy trình đăng ký giống như một sợi chỉ nhẹ. Vì vậy, nếu quy trình đăng quang bị đình chỉ, thì việc tính toán có thể được thực hiện như thế nào?
Chúng tôi thấy await
được gọi là trên computation
, vì vậy nó có thể async
trả về Deferred
, có nghĩa là nó có thể bắt đầu một quy trình đăng ký khác
fun computation(): Deferred<Boolean> {
return async {
true
}
}
🤔 Trích dẫn nói rằng đình chỉ một quy trình đăng quang . Nó có nghĩa là suspend
quy trình đăng quang bên ngoài async
hay suspend
quy trình đăng quang bên trong computation
?
Liệu suspend
có nghĩa rằng trong khi bên ngoài async
coroutine đang chờ ( await
) cho khu vực nội computation
coroutine đến cuối, nó (ngoài async
coroutine) idles (do đó tên đình chỉ) và lợi nhuận chủ đề đến hồ bơi thread, và khi trẻ computation
kết thúc coroutine, nó (ngoài async
coroutine ) thức dậy, lấy một chuỗi khác từ hồ bơi và tiếp tục?
Lý do tôi đề cập đến chuỗi này là vì https://kotlinlang.org/docs/tutorials/coroutines-basic-jvm.html
Chuỗi được trả về nhóm trong khi quy trình đăng ký đang đợi và khi quá trình chờ hoàn tất, quy trình đăng ký tiếp tục trên một chuỗi miễn phí trong nhóm