runBlocking vs coroutineScope for certain actions

Hi all, I am very new to Kotlin and come from a Scala background, mainly from the Typelevel stack using cats-effect and the like. I’ve been told my new team use Kotlin heavily and I will be moving away from Scala for a rotation, so I am trying to get familiar with the language.

I have a quick question with regards to asynchronous programming, mainly concerning

runBlocking

and

coroutineScope

. I’m just wondering if there are general rules of thumb when using the two in production code, mainly to do with gRPC, microservices and the like, no UI code anywhere.

Am I correct in thinking a valid distinction would be to use

coroutineScope

when performing database writes (that I do not need to receive a result for) so the thread can continue to perform other duties as those coroutines execute?

Would an example of using

runBlocking

properly be when I need to perform some HTTP request, of which the result is crucial to the code immediately after the

runBlocking

?

Does anyone know of any resources that might detail how this works in relation to Scala’s cats-effect?

Thanks!

submitted by /u/Sicarius154
[link] [comments]