이 문서는 Google Cloud Translation API를 사용해 자동 번역되었습니다.
어떤 문서는 원문을 읽는게 나을 수도 있습니다.
동시 프로그래밍에서 프로그램의 다른 부분은 CPU 시간 및 메모리와 같은 리소스를 더 잘 사용하기 위해 서로 독립적으로 실행될 수 있습니다. 동시 프로그래밍의 일반적인 문제는 충돌을 피하기 위해 프로그램의 다른 부분을 조정하는 것입니다.
Kotlin의 채널과 흐름은 프로그램의 서로 다른 부분이 서로 통신할 수 있도록 하여 동시 프로그래밍을 관리하는 유용한 방법을 제공합니다. 채널은 프로그램의 한 부분에서 다른 부분으로 데이터를 전달할 수 있는 파이프와 같으며 흐름은 이러한 채널을 통해 데이터 흐름을 관리하는 방법입니다.
다음은 채널과 흐름을 사용하여 프로그램의 다른 부분을 조정하는 방법에 대한 간단한 예입니다. 우리는 숫자 목록을 출력해야 하는 프로그램이 있지만 두 부분으로 분리하여 수행하려고 합니다. 한 부분은 숫자 자체를 인쇄하고 다른 부분은 숫자가 인쇄된 후 메시지를 인쇄합니다.
채널을 사용하여 프로그램의 첫 번째 부분에서 두 번째 부분으로 숫자를 보낼 수 있고 흐름을 사용하여 모든 숫자가 전송된 후에만 메시지가 인쇄되도록 할 수 있습니다.
import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
fun main() {
val numbers = (1..5).asFlow() // 1
val printMessage = numbers.onEach { println(it) } // 2
.collect { println("Done printing numbers") } // 3
runBlocking {
launch { printMessage.collect() } // 4
}
}
collect
변환을 사용하여 모든 숫자가 인쇄될 때까지 기다린 다음 메시지를 인쇄합니다.이 예는 채널과 흐름을 사용하여 프로그램의 다른 부분을 조정하는 방법을 보여줍니다. 채널은 프로그램의 다른 부분이 서로 통신할 수 있도록 하며 흐름은 이러한 채널을 통해 데이터 흐름을 관리하는 방법을 제공합니다.