Sobes.tech
Junior

Proqramlaşdırma kontekstində axınlar nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Thread (ip) — çoxlu tapşırıq əməliyyat sistemində ən kiçik icra vahididir. Bu, proqramın eyni proses daxilində birdən çox vəzifəni eyni vaxtda yerinə yetirməsinə imkan verir.

Əsas xüsusiyyətlər:

  • Resursların paylaşılması: Eyni prosesdəki iplar ümumi ünvan sahəsini, yaddaşı və digər resursları paylaşır.
  • Daha aşağı overhead xərcləri: Yeni ip yaratmaq, yeni proses yaratmaqdan daha az resurs (vaxt və yaddaş) tələb edir.
  • Paralel/konkurrent icra: İplər çox nüvəli prosessorlarda paralelliyi (bir çox nüvəli prosessorlarda) və ya rəqabəti (bir nüvəli prosessorlarda) təmin edir.
  • Yarış vəziyyəti riski: İplər yaddaşı paylaşdığı üçün, ümumi verilərə eyni vaxtda girişdə münaqişə riski mövcuddur. Sinxronizasiya mexanizmləri (mutexlər, semaforlar) tələb olunur.

Flutter-də, UI kodunun tək ipdə icra modeli istifadə olunur, burada əsas ip (UI thread) bütün render, giriş hadisələri və animasiyaları idarə edir. Çəki hesablamalar, müstəqil proseslər olan izolalar (isolates) daxilində həyata keçirilir və onlar mesaj portları vasitəsilə qarşılıqlı əlaqə qurur.

// Flutter-də ağır hesablamalar üçün müstəqil izolanın yaradılması nümunəsi
import 'dart:isolate';

Future<void> heavyComputation(SendPort sendPort) async {
  // Hesablamalar...
  int result = 0;
  for (int i = 0; i < 1000000000; i++) {
    result += i;
  }
  sendPort.send(result); // Nəticəni geri göndəririk
}

void main() async {
  final receivePort = ReceivePort();
  // İzolatın yaradılması və nəticələrin göndərilməsi üçün portun ötürülməsi
  await Isolate.spawn(heavyComputation, receivePort.sendPort);

  receivePort.listen((message) {
    print('Hesablama tamamlandı, nəticə: $message');
    receivePort.close(); // Portu bağlayırıq
  });

  print('Ayrı bir izolatda hesablamaya başlandı...');
}

Proseslər və iplar arasındakı fərqlər:

Xüsusiyyət Proses İp (thread)
Ünvan sahəsi Hər proses üçün müstəqil Eyni proses daxilində iplar arasında paylaşılır
Resurslar Fərqli Paylaşılan
Yaradılması Bahalı (yüksək overhead) Ucuz (daha az overhead)
Əlaqə Daha mürəkkəb (IPC - Proseslərarası əlaqə) Daha sadə (paylaşılan yaddaşa giriş)
Xətaya davamlılıq Bir prosesin çökməsi digərinə təsir etmir Bir ipin çökməsi prosesi təsir edə bilər