Sobes.tech
Junior

Šta su niti u kontekstu programiranja?

sobes.tech АИ

Одговор од АИ

Nit (thread) je najmanja jedinica izvršavanja u multitask operativnom sistemu. To je način na koji program može istovremeno izvršavati više zadataka unutar jednog procesa.

Ključne karakteristike:

  • Deljenje resursa: Nitovi u istom procesu dele zajednički adresni prostor, memoriju i druge resurse procesa.
  • Manji troškovi: Kreiranje nove niti zahteva manje resursa (vremena i memorije) nego kreiranje novog procesa.
  • Paralelno/konkurentno izvršavanje: Nitovi omogućavaju postizanje paralelizma (na višednarednim procesorima) ili konkurentnosti (na jednostranim).
  • Rizik od trkaćih uslova: Pošto niti dele memoriju, postoji rizik od konflikata pri istovremenom pristupu zajedničkim podacima. Potrebni su mehanizmi za sinhronizaciju (muteksi, semafori).

U Flutteru se koristi model jednostranog izvršavanja UI-koda, gde glavni nit (UI thread) obrađuje sve crtanje, događaje unosa i animacije. Teški računi se izvršavaju u izolatom (isolates), koji predstavljaju odvojene procese sa sopstvenom memorijom, komunicirajući putem portova poruka.

// Primer kreiranja odvojenog izolata u Flutteru za izvršavanje teških računa
import 'dart:isolate';

Future<void> heavyComputation(SendPort sendPort) async {
  // Računi...
  int result = 0;
  for (int i = 0; i < 1000000000; i++) {
    result += i;
  }
  sendPort.send(result); // Slanje rezultata nazad
}

void main() async {
  final receivePort = ReceivePort();
  // Kreiranje izolata i prosleđivanje porta za slanje rezultata
  await Isolate.spawn(heavyComputation, receivePort.sendPort);

  receivePort.listen((message) {
    print('Računanje završeno sa rezultatom: $message');
    receivePort.close(); // Zatvaranje porta nakon dobijanja rezultata
  });

  print('Računanje je započelo u odvojenom izolatu...');
}

Razlike između procesa i niti:

Karakteristika Proces Nit
Adresni prostor Samostalno za svaki proces Zajedničko za niti u jednom procesu
Resursi Različiti Deljeni
Kreiranje Skupo (veće režije) Jeftino (manje režije)
Komunikacija Složenije (IPC - međuprocesna komunikacija) Jednostavnije (pristup zajedničkoj memoriji)
Otpor prema greškama Pojedinačan pad procesa ne utiče na ostale Pad niti može uticati na proces