在界面中声明最后的乐趣

我正在Kotlin编写一个合作的multithreading引擎。 我试图写一个接口,如下所示:

interface Processor { var suspendAction: (Continuation) -> Unit inline suspend fun yield() = suspendCoroutine(suspendAction) suspend fun process(inbox: Inbox) = Unit } 

yield()是我想提供给所有这个接口的实现者的服务。 由于每个虚拟呼叫站点代表了内联的障碍,并且由于每个进入suspend fun入口都有其代价,出于性能的原因,我需要这个函数是final ,但是Kotlin不允许我这样做。 我发现一个解决方法将yield()转换为扩展的乐趣:

 inline suspend fun Processor.yield() = suspendCoroutine(suspendAction) 

我想问一下,这样的用例是否会激励Kotlin语言设计师在interface final fun

请注意,与典型的等待IO暂停方案不同,此处的yield()发生在CPU密集型热点线程上。