- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Kotlin/Coroutines 的新手,我注意到两种不同的使用方式 CoroutineScope
.
选项 1 如下,在任何函数中:
CoroutineScope(Dispatchers.Default).launch {
expensiveOperation()
}
CoroutineScope
类中的接口(interface),覆盖
CoroutineContext
,然后您可以使用
launch
轻松启动协程或
không đồng bộ
:
@Dịch vụ
class ServiceImpl() : CoroutineScope {
override val coroutineContext: CoroutineContext
get() = Dispatchers.Default + Job()
fun someFunction() {
launch {
expensiveOperation()
}
}
}
CoroutineScope
的首选方法?
override val coroutineContext: CoroutineContext
get() = Dispatchers.Default + Job()
fun someFunction() {
launch {
expensiveOperation(CoroutineScope(coroutineContext))
}
}
private fun expensiveOperation(scope: CoroutineScope)
{
// perform expensive operation
}
1.3
của
Kotlin
.
1 Câu trả lời
我会推荐选项 2。它会让你有机会清楚地定义父 Job
对于你所有的协程。这也提供了一个正确关闭整个执行的机会。
还有几个协程上下文键要包括 - CoroutineName
, CoroutineExceptionHandler
等等。
最后,如果您通过 CoroutineScope
,结构并发可能会更好地工作。以及明确的关联作业。
https://medium.com/@elizarov/structured-concurrency-722d765aa952
另外,看看 Roman 的解释:
https://medium.com/@elizarov/coroutine-context-and-scope-c8b255d59055
关于Kotlin Coroutines - 使用 Coroutine Scope/Context 的不同选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55174642/
nhập kotlinx.coroutines.* fun log(msg: String) = println("[${Thread.currentThread().name}] $msg")
Tôi có một thư viện bên ngoài thực hiện các phép tính dài. Thư viện này không hề có tính hợp tác trong việc dừng sớm. Nó được gói lại và khởi chạy trong một coroutine. Tôi muốn chấm dứt tiến trình từ người gọi. Việc hủy bỏ coroutine là hợp tác, do đó nó không có tác dụng. Có cách nào để chấm dứt một coroutine đột ngột không? Câu trả lời hay nhất Các coroutine không bị treo
Tôi mới làm quen với Kotlin/Coroutines và tôi nhận thấy có hai cách khác nhau để sử dụng CoroutineScope. Tùy chọn 1 như sau, trong bất kỳ hàm nào: CoroutineScope(Dispatchers.D
Tôi khá mới với coroutine và tôi đang cố gắng để có được hành vi mà coroutine Launch sẽ thực hiện: launch(UI) { val v1 = someDeferredType val v2 = v1.a
Tài liệu nói rằng: @asyncio.coroutine Decorator để đánh dấu các coroutine dựa trên trình tạo. Điều này cho phép trình tạo sử dụng
Tôi đang sử dụng kiểu thử nghiệm Funspec trong kotest và tôi nhận được coroutineScope được tự động đưa vào bởi khung như hiển thị bên dưới. lớp MyTestSpec: FunSpec()
Tôi đang cố gắng tạm dừng chủ đề chính từ bên trong một courtine. Một vài câu hỏi, nhưng trước tiên hãy để tôi cho bạn xem khối mã tôi đang sử dụng làm bài kiểm tra: class MainActivity : Activity(), CoroutineScope
Tôi không chắc mình có hiểu lý do tại sao lại có hàm connect và hàm pullFrom trong purescript-coroutines không. và khi nào nên sử dụng chúng. Nhìn vào những kiểu này, chúng có vẻ như đã quen với việc thay đổi "hướng giao tiếp" (
Tôi có 2 coroutine (co_A, co_B) trong các lớp khác nhau (class_A, class_B) được trình lập lịch gọi theo định kỳ. Tại một thời điểm nào đó trong quá trình thực thi, co_B cần một kết quả mà co_A đã tính toán trong quá trình chạy. Điều tôi muốn làm là thế này
Trong tài liệu, nếu phương thức cũng được trang trí bằng @gen.coroutine, thì @web.asynchronous là không cần thiết. Giống như thế này @web.asynchronous @gen.coroutine def
Hiện tại có nhiều cách để triển khai vòng lặp IO không đồng bộ được đề cập trong tài liệu trong pzmq. http://pyzmq.readthedocs.io/en/latest/api/index.html Theo quan điểm hiệu suất thuần túy, tài liệu
Có vẻ như tôi đã hiểu sai cách Windows xử lý các socket trong TIME_WAIT khi có nhiều socket mở. Nó sẽ báo lỗi nếu có quá nhiều người bị treo trong TIME_WAIT. Linux dọn dẹp các kết nối cũ và thành công (ít nhất là trên máy của tôi, không chắc lắm)
Tôi đang cố gắng kiểm tra đơn vị Presenter mà tôi đã tạo bằng Kotlin coroutine. Đây cũng là lần đầu tiên tôi sử dụng Mockito. Bất cứ khi nào tôi cố gắng chạy thử nghiệm đơn vị, nó đều thất bại ngay lần đầu tiên nó cố gắng thực hiện bất kỳ điều gì với View của tôi trong coroutine.
Tôi nhận thấy rằng hỗ trợ cho coroutine đối xứng đã bị loại bỏ trong Boost.Coroutine2 dành cho C++, vì vậy tôi muốn tìm hiểu - sự khác biệt giữa hai loại này là gì? Câu trả lời hay nhất: Ana Lúcia de Moura và Roberto Ier
Trong cuốn sách Linux System Programming, ấn bản thứ 2, sự khác biệt giữa coroutine và fiber được giải thích như sau: Coroutine và fiber cung cấp các đơn vị thực thi nhẹ hơn thread (coroutine là tên của cấu trúc ngôn ngữ lập trình, fiber là tên của cấu trúc hệ thống).
Ví dụ này đã được sử dụng trong một câu hỏi khác để minh họa cách sử dụng coroutine để viết đoạn cắt cảnh trong trò chơi điện tử: bob.walkto(jane) bob.lookat(jane) bob.say("How are you?") wait(2
Tôi đang tìm cách triển khai FSM, điều này đã dẫn tôi đến lần đầu tiên tiếp xúc với coroutine. Tôi đã thấy một số ví dụ (tại đây, tại đây và tại đây) cho thấy rằng một máy trạng thái có thể được triển khai bởi một coroutine duy nhất. Tuy nhiên, tôi nhận thấy rằng tất cả những cỗ máy này đều có điểm chung là, ngoại trừ vòng lặp, chúng
Giới thiệu ngắn gọn về coroutine c/c++ Từ những thông tin trên, chúng ta có thể rút ra một số thông tin chính về coroutine: 1. Phá vỡ những hạn chế của các lệnh gọi hàm truyền thống (thông thường). 2. chồng
Tôi đang cố gắng tải tất cả các ứng dụng đã cài đặt có thể khởi chạy một cách không đồng bộ từ ViewModel. Đây là giao diện của lớp ViewModel của tôi: class AppInstalledViewModel(application: Applicat
Làm thế nào để thực hiện nhiều lần khởi chạy như đa luồng trong kotlin Tôi muốn giây đầu tiên hoạt động đồng thời mãi mãi!! Giống như đoạn mã này... runBlocking { // first launch{
Tôi là một lập trình viên xuất sắc, rất giỏi!