Dlaczego w Kotlinie nie ma słów kluczowych dotyczących współbieżności?

Po prostu zanurzam się w tym niesamowitym języku, a ta jedna rzecz jest dla mnie frustrująca. Dlaczego nie ma słów kluczowych do synchronizacji?

Jak na razie moje badania dają jedno rozwiązanie, owijasz kilka klas wysokiego poziomu i używasz ich do obsługi współbieżności...

Biorąc pod uwagę projekt na czystym kotlinie, co należy zrobić, jeśli istnieje potrzeba małego, wysoce zoptymalizowanego komponentu, który obsługuje współbieżność itp... Mam wrażenie, że kotlin jest językiem pomocniczym dla Javy, pisząc 90% z kod w kotlinie, ale mają jakiś kod java, który nie jest możliwy do wyrażenia za pomocą Kotlina.

Czy to prawda? Tak miało być?

Author: Gautam Chibde, 2016-02-20

1 answers

Kotlin 1.1 Z Koroutinami został wydany {[24] } i przynosi ze sobą async..await! Przeczytaj więcej na ten temat w Kotlin reference docs, Biblioteka Kotlinx Coroutines i ta wielka głębia Coroutines na przykładzie

Poza Koroutinami Kotlina masz następujące opcje:

Masz wszystko, co ma Java i nie tylko. Twoja fraza "synchronizacja i blokady" jest spełniona przez lista powyżej, a potem masz jeszcze więcej i bez zmian językowych. Wszelkie funkcje językowe uczyniłyby go tylko nieco ładniejszym.

Więc możesz mieć 100% Kod Kotlina, używając małego środowiska uruchomieniowego Kotlin, środowiska uruchomieniowego JVM z JDK i każdej innej biblioteki JVM, której chcesz użyć. Nie potrzeba kodu Javy, tylko biblioteki Javy (jak w JVM).

Krótka próbka niektórych funkcji:

class SomethingSyncd {
    @Synchronized fun syncFoo() {

    }

    val myLock = Any()

    fun foo() {
        synchronized(myLock) {
            // ... code
        }
    }

    @Volatile var thing = mapOf(...)
}
 85
Author: Jayson Minard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-03 15:56:31