Junior
Programlamada bağlamında akışlar nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
İş Parçası (thread) — Çok görevli bir işletim sisteminde en küçük yürütme birimidir. Bir programın aynı anda birden fazla görevi, aynı süreç içinde gerçekleştirmesini sağlar.
Ana özellikler:
- Kaynak paylaşımı: Aynı süreçteki iş parçaları, ortak adres alanını, belleği ve diğer kaynakları paylaşır.
- Daha düşük maliyetler: Yeni bir iş parçası oluşturmak, yeni bir süreç oluşturmaya göre daha az kaynak (zaman ve bellek) gerektirir.
- Paralel/rekabetçi yürütme: İş parçaları, çok çekirdekli işlemcilerde paralellik veya tek çekirdekli işlemcilerde rekabet sağlar.
- Yarış durumu riski: İş parçaları belleği paylaştığı için, ortak verilere aynı anda erişimde çatışma riski vardır. Senkronizasyon mekanizmaları (mutexler, semaforlar) gereklidir.
Flutter'da, UI kodunun tek iş parçacıklı yürütme modeli kullanılır; burada ana iş parçacığı (UI thread) tüm çizim, giriş olayları ve animasyonları işler. Ağır hesaplamalar, kendi belleğine sahip bağımsız süreçler olan izolalar (isolates) içinde gerçekleştirilir ve mesaj portları aracılığıyla etkileşir.
// Flutter'da ağır hesaplamalar yapmak için ayrı bir izolanın nasıl oluşturulacağına örnek
import 'dart:isolate';
Future<void> heavyComputation(SendPort sendPort) async {
// Hesaplamalar...
int result = 0;
for (int i = 0; i < 1000000000; i++) {
result += i;
}
sendPort.send(result); // Sonucu geri gönder
}
void main() async {
final receivePort = ReceivePort();
// İzolat oluşturma ve sonuç göndermek için portu iletme
await Isolate.spawn(heavyComputation, receivePort.sendPort);
receivePort.listen((message) {
print('Hesaplama tamamlandı, sonuç: $message');
receivePort.close(); // Sonuç alındıktan sonra portu kapat
});
print('Ayrı bir izolat içinde hesaplama başlatıldı...');
}
Prosesler ve iş parçacıkları arasındaki farklar:
| Özellik | Proses | İş Parçası |
|---|---|---|
| Adres alanı | Her proses için bağımsız | Aynı proses içindeki iş parçacıkları arasında paylaşılır |
| Kaynaklar | Farklı | Paylaşılan |
| Oluşturma | Maliyetli (yüksek maliyetli) | Uygun (daha düşük maliyetli) |
| İletişim | Daha karmaşık (IPC - İşlem içi iletişim) | Daha basit (paylaşılan belleğe erişim) |
| Hata toleransı | Bir prosesin çökmesi diğerlerini etkilemez | Bir iş parçacığının çökmesi, proses üzerinde etkili olabilir |