歡迎光臨
我們一直在努力

Kotlin/Native v0.8 釋出,提供更安全的併發程式設計支援

文章摘要: val key = records[0].trim()Kotlin/Native 應用程式將單例物件狀態保持為特定執行的執行緒的本地狀態

Kotlin/Native v0.8 已正式釋出,該版本有以下值得關注的更新:

  • 更安全的併發程式設計

  • 擴充套件 stdlib 功能

  • 更好的 iOS 開發支援

此外該版本還包含許多錯誤修復和優化。

GitHub 釋出主頁 https://github.com/JetBrains/kotlin-native/releases/tag/v0.8

更好的併發支援

在 v0.8 之前,Kotlin/Native 應用程式將單例物件狀態保持為特定執行的執行緒的本地狀態,因此不同執行緒上的單例物件的狀態可能是非同步的。現在,擴充套件了凍結單例物件的概念,允許共享的不可變狀態。

例如,以下程式碼

object Config {
    var width: Int = 10
    private set
    init {
        val file = fopen("config.txt", "r")
        if (file != null) {
            try {
                memScoped {
                    val bufferLength = 2 * 1024
                    val buffer = allocArray(bufferLength)
                    while (true) {
                        val nextLine = fgets(buffer, bufferLength, file)?.toKString()
                        if (nextLine == null || nextLine.isEmpty()) break
                        val records = nextLine.split('=')
                        if (records.size != 2) continue
                        val key = records[0].trim()
                        val value = records[1].trim()
                        when (key) {
                            "width" -> width = value.toInt()
                        }
                    }
                }
            } finally {
                fclose(file)
            }
        }
    }
}

將讀取配置檔案,並可以提供 Config.width 屬性。 每個程序執行時將讀取一次 Config 檔案,並且可供任何執行緒或 worker 使用。 而一旦釋出,該物件就會被凍結,並且不能再被修改(嘗試修改將丟擲 InvalidMutabilityException 異常)。

其他有關庫的改進,以及對 iOS 開發支援的改進,請檢視釋出主頁 https://blog.jetbrains.com/kotlin/2018/07/kotlinnative-v0-8-released/

未經允許不得轉載:頭條楓林網 » Kotlin/Native v0.8 釋出,提供更安全的併發程式設計支援