报告可从协程到达的 runBlocking 构建器。

协程共享执行的线程。 从协程调用 runBlocking 构建器时,它会阻塞底层线程,并阻止其他协程使用此资源。 这可能会导致性能问题,在糟糕的情况下还会导致线程饥饿。

它提供了从协程基元(挂起函数或构建器)到 runBlocking 构建器的潜在调用栈。

示例:


  suspend fun main() {
      foo() 
   }

  fun foo() {
      runBlocking { suspendFunction() }
  }

潜在解决方案:


  suspend fun main() {
      foo() 
   }

  suspend fun foo() {
      suspendFunction()
  }

使用浏览具有重写的函数选项可以配置虚拟函数的分析: