yield is a suspending function and it uses synchronization when moving the coroutine to another thread to establish happens before relation between its invocation (suspension) in one thread and its return (resumption) in another thread. You can get a more information from my JVMLS talks that covers some JVM-specific implementation details https://www.youtube.com/watch?v=3xalVUY69Ok

Written by

Project Lead for the Kotlin Programming Language @JetBrains

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store