Ana içeriğe geç
Programlama

Fil-C için geliştirilen async-a-sync C diline örtük asenkron yapı kazandırıyor

Öne çıkanlar

  • İşaretlenen fonksiyon çağrıları bloklama yapmadan anında geri dönüyor.
  • Tampon belleğe yapılan ilk erişim, asenkron işlemin sonucunu otomatik bekliyor.
  • Linux io_uring ile yapılan 512 okuma işlemi engellemeli pread'e göre 3,5 kat hızlandı.
  • Sistem çekirdeğe istekleri tek tek göndermek yerine ilk erişimde toplu iletiyor.

Fil-C altyapısı üzerine inşa edilen async-a-sync adlı yeni derleyici ve çalışma zamanı sistemi, C programlama diline sözdizimi eklemeden örtük asenkron gelecekler kazandırdı. Sistem, geliştiricilerin alışıldık bloklayıcı ve eşzamanlı kod yazmasına imkan tanırken işlemlerin arka planda asenkron yürütülmesini sağlıyor. İşaretlenen fonksiyon çağrıları bloklama yapmadan anında geri dönüyor ve üretilen bellek tamponları işlem tamamlanana kadar beklemede kalıyor.

Sistemin çalışma mantığı Fil-C projesinin sunduğu InvisiCaps teknolojisine dayanıyor. InvisiCaps aracılığıyla her işaretçi nesnesinin başlık bilgisine erişen yamalanmış Clang derleyicisi, her bellek erişiminden önce ilgili tamponun durumunu kontrol ediyor. Bir tampona yapılan ilk erişim gerçekleştiğinde, bekleyen işlem otomatik olarak bekleniyor ve ek bir await veya senkronizasyon çağrısına gerek kalmıyor. Proje bağımsız çalışma zamanı mimarisini destekliyor ve bünyesinde Linux io_uring ile TCP tabanlı RPC olmak üzere iki farklı çalışma zamanı barındırıyor.

Sistem io_uring çalışma zamanını kullandığında fonksiyon çağrılarını kuyruğa alıyor ve sonuç gerektiğinde tüm istekleri çekirdeğe toplu halde gönderiyor. Yapılan testlerde soğuk önbellekten gerçekleştirilen 512 okuma işlemi, standart engelleme yapan pread çağrılarına kıyasla yaklaşık 3,5 kat daha hızlı tamamlandı. Geliştiriciler birden fazla tamponu tek noktada senkronize etmek için filc_async_wait_all arayüzünü de sisteme dahil etti. Proje kaynak kodları ve yamalanmış Clang bileşenleri GitHub üzerinde yayımlandı.

Kaynak

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