क्या कोटलिन कॉरआउट्स गारंटी प्रदान करता है?
उदाहरण के लिए, क्या mutableVar
इस मामले में अन्य संभावित सूत्र पर (संभावित रूप से) पर लिखने और बाद में पढ़ने के बीच "होने वाली-पहले" गारंटी है :
suspend fun doSomething() {
var mutableVar = 0
withContext(Dispatchers.IO) {
mutableVar = 1
}
System.out.println("value: $mutableVar")
}
संपादित करें:
शायद अतिरिक्त उदाहरण प्रश्न को बेहतर ढंग से स्पष्ट करेगा क्योंकि यह अधिक कोटलिन-ईश (उत्परिवर्तन को छोड़कर) है। क्या यह कोड थ्रेड सुरक्षित है:
suspend fun doSomething() {
var data = withContext(Dispatchers.IO) {
Data(1)
}
System.out.println("value: ${data.data}")
}
private data class Data(var data: Int)
withContext
, जबकि 1 उदाहरण इसे पहले बनाता है, भीतर उत्परिवर्तित करता है withContext
, और उसके बाद पढ़ता है withContext
। इसलिए 1 उदाहरण अधिक थ्रेड सुरक्षा सुविधाओं का उपयोग करता है।