Ana içeriğe geç
Programlama

C++ standart kütüphanesindeki future mekanizmasının temelleri açıklandı

Öne çıkanlar

  • std::future ve ilişkili sınıflar tek bir paylaşılan durum yapısı üzerinden çalışır.
  • Kaynak yapısı bir değere veya istisnaya yalnızca tek seferlik atama izni verir.
  • İş parçacığı senkronizasyonu std::mutex ve std::condition_variable ile sağlanır.
  • Değer bir kez tüketildiğinde durum güncellenir ve tekrar erişim engellenir.

Microsoft teknik blogunda yayımlanan yazıda std::future, std::promise, std::packaged_task ve std::async bileşenlerinin arka planındaki ortak zihinsel model paylaşıldı. Bu sınıfların tamamı C++ standart kütüphanesinin arka planda durum olarak adlandırdığı ortak bir yapı üzerinden çalışıyor. Yazar, bu temel yapıyı değer üreten bir kaynak modeli olarak soyutlayıp basitleştirilmiş bir tasarımla anlattı.

Tasarlanan kaynak yapısı temel olarak değer veya istisna atama, bu atamayı bekleme ve sonucu tüketme operasyonlarını destekliyor. İç yapıda bir union, durum ayracı, std::mutex ve std::condition_variable kullanılarak iş parçacığı güvenliği sağlanıyor. Değer veya istisna yalnızca bir kez atanabiliyor ve ikinci bir atama girişiminde standart hata fırlatılıyor.

Bekleme işlemleri süresiz ya da belirli bir zaman aşımı parametresiyle yürütülebiliyor. Kaynaktan veri çekilirken ise değer ya tüketiliyor ya da sabit referans olarak okunuyor; istisna durumu kaydedilmişse bu hata çağrıcıya yeniden fırlatılıyor. Tüketilen bir değerin tekrar okunması engellenerek güvenli veri transferi sağlanıyor.

Kaynak

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