Dart-da çoxmərhələliyin həyata keçirilməsinin xüsusiyyətlərini və bunun tətbiq daxilində necə işlədiyini izah edin.
sobes.tech Süni İntellekt
AI-dan cavab
Dart-da çoxlu iş parçacığı "Isolates" konsepti vasitəsilə həyata keçirilir — bunlar birbaşa yaddaşı paylaşmayan müstəqil icra axınlarıdır. Hər bir isolate öz yığını və yığınına malikdir, bu da vəziyyət və yarış şərtləri ilə bağlı problemləri aradan qaldırır.
Flutter tətbiqi daxilində, əsas axın (UI isolate) interfeysi çəkmək və hadisələri idarə etmək üçün cavabdehdir. Çəkli və ya uzunmüddətli tapşırıqlar üçün əlavə isolates yaradılır və onlar paralel işləyir, UI-ni bloklamadan.
Isolates arasında əlaqə mesaj ötürmə (message passing) vasitəsilə həyata keçirilir, portlar (SendPort və ReceivePort) istifadə edilərək. Bu, dəyərlərin kopyalandığı asinxron məlumat mübadiləsidir, ümumi yaddaş paylaşılmır.
Isolate yaratma nümunəsi:
import 'dart:isolate';
void heavyTask(SendPort sendPort) {
// Çəkli tapşırığın yerinə yetirilməsi
int result = 0;
for (int i = 0; i < 1000000; i++) {
result += i;
}
sendPort.send(result); // Nəticəni geri göndəririk
}
void main() async {
ReceivePort receivePort = ReceivePort();
await Isolate.spawn(heavyTask, receivePort.sendPort);
receivePort.listen((message) {
print('Isolates-dən nəticə: $message');
receivePort.close();
});
}
Bu şəkildə, Dart yaddaş izolyasiyası və mesaj mübadiləsi ilə təhlükəsiz və səmərəli çoxlu iş parçacığını təmin edir.