import kotlinx.coroutines.*
data class SensorData(val value: Int)
fun processSensorData(data: SensorData): Int {
// 模拟数据处理
delay(100)
return data.value * 2
}
suspend fun main() {
val sensorDataList = listOf(SensorData(1), SensorData(2), SensorData(3))
val resultList = withContext(Dispatchers.Default) {
sensorDataList.map { data ->
async { processSensorData(data) }
}.awaitAll()
}
println(resultList)
}
选择 Dispatchers.Default
配合协程 async/await
的理由
- 简单高效:Kotlin 的协程通过
async
函数可以轻松地启动异步任务,awaitAll
函数用于等待所有异步任务完成并收集结果,这种方式简洁明了,易于理解和实现。
- 资源管理:
Dispatchers.Default
调度器适用于 CPU 密集型任务,它使用一个共享的线程池,能够有效地管理线程资源,避免过多线程创建带来的开销,在处理多个传感器数据时能保证系统的整体性能。
- 并发处理:
async
函数创建的多个协程任务可以并发执行,从而充分利用多核 CPU 的优势,加快所有传感器数据的处理速度,满足尽快处理完所有数据的需求。