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 |