কোটলিন কর্টাইনগুলি কোনও "ঘটনার আগে" গ্যারান্টি সরবরাহ করে?
উদাহরণস্বরূপ, 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 ম উদাহরণ আরও থ্রেড সুরক্ষা বৈশিষ্ট্য অনুশীলন করে।