Ana içeriğe geç
Programlama

Zig eşzamanlı girdi çıktı işlemlerinde iptal desteği sunuyor

Öne çıkanlar

  • std.Io.Threaded arayüzü, bloklanan sistem çağrılarında çalışan iş parçacıklarını güvenli biçimde iptal ediyor.
  • POSIX ortamında EINTR sinyalleri ve paylaşılan bellek bayrakları üzerinden iki taraflı bir protokol yürütülüyor.
  • İptal edilen çağrılar Zig dilinin standart hata yönetimi ve defer temizleme bloklarıyla doğrudan bütünleşiyor.

Zig standart kütüphanesine eklenen std.Io.Threaded arayüzü, işletim sistemi iş parçacıklarını engelleme tabanlı sistem çağrılarıyla (syscall) kullanırken eşzamanlı işlemleri güvenilir şekilde iptal etme olanağı sağlıyor. Geleneksel programlama dillerinde çekirdek seviyesinde bloklanan iş parçacıklarının iptal edilmesi zorken, Zig bu süreci işletim sistemi düzeyindeki sinyaller ve paylaşılan bellek bayrakları üzerinden yönetiyor.

POSIX sistemlerinde bir sistem çağrısı çalışırken iletilen sinyaller çağrıyı keserek EINTR hatası döndürüyor. Zig, iptal isteğinde bulunan iş parçacığının bellek üzerinde bir bayrak işaretlemesini ve hedef iş parçacığı iptali onaylayana kadar sinyal göndermesini sağlayan bir protokol yürütüyor. İş parçacığı iptal edildiğinde işlem error.Canceled hatasıyla sonuçlanıyor ve dilin defer gibi kaynak temizleme mekanizmaları devreye giriyor. Windows ortamında ise bu işlem doğrudan NtCancelSynchronousIoFile fonksiyonu ile yürütülüyor.

Java ve pthread_cancel gibi önceki uygulamalar sistem çağrısı kesintilerini ya desteklemiyor ya da iş parçacığını tamamen sonlandırarak dil düzeyindeki hata yönetimiyle bütünleşemiyor. Zig, io.async ve io.concurrent ayrımlarıyla iş parçacığı havuzu yönetimini dil düzeyindeki arayüz tasarımıyla birleştiriyor.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.