簡體   English   中英

Kotlin 並發:任何在鎖中運行代碼的標准函數?

[英]Kotlin Concurrency: Any standard function to run code in a Lock?

我一直在尋找一個函數,它接受一個Lock類型的對象並運行一個帶有該鎖的代碼塊,負責鎖定和解鎖。

我會按如下方式實現它:

fun <T : Lock> T.runLocked(block: () -> Unit) {
    lock()
    try {
        block()
    } finally {
        unlock()
    }
}

像這樣使用:

val l = ReentrantLock()
l.runLocked {
    println(l.isLocked)
}

println(l.isLocked)
//true
//false

有什么可用的嗎? 我只能找到無法像這樣使用的synchronized功能。

您正在尋找withLock ,它具有您自己編寫的確切實現,但它具有用於塊結果的通用參數而不是接收器類型。

你可以找到標准庫的其他並發相關的方法在這里,在kotlin.concurrent包。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM