CodeBlanks Logo Icon CodeBlanks

std::async

std::async ile asenkron görev öğrenirsin.

std::async

std::async, bir fonksiyonu arka plan iş parçacığında çalıştırır ve sonucu std::future olarak döndürür. Sözdizimi: auto f = std::async(std::launch::async, func);. func ayrı bir iş parçacığında başlar; f.get() sonucu bekler.

std::launch::async hemen başlatmayı, std::launch::deferred ise get çağrılana dek ertelemeyi belirtir. Varsayılan std::launch::async | std::launch::deferred uygulamaya bırakır; genellikle std::launch::async açıkça verilir. async, ham std::thread'den daha yüksek seviyelidir; dönüş değeri taşır ve istisnaları iletir.

Dönüş değeri

std::async'in dönüş türü std::future<R>'dir; burada R fonksiyonun dönüş türüdür. int compute() için std::future<int> döner. Sonuç f.get() ile alınır; bu çağrı, fonksiyon bitene kadar bekler.

Eğer fonksiyon istisna fırlatırsa, bu istisna future'da saklanır ve get çağrıldığında yeniden fırlatılır. Bu, ham std::thread'de olmayan bir yetenektir; thread ile istisna fırlatıldığında std::terminate çağrılır. async, bu yüzden hata yönetimi için daha güvenlidir.

Uygulama async ile compute

int compute() yaz; gövdede return 42; olsun. main içinde auto f = std::async(std::launch::async, compute); ile başlat ve std::cout << f.get(); ile sonucu yazdır. <future> başlığını ekle.

Başlangıç kodu

main.cpp
#include <iostream>
#include <future>

// compute fonksiyonunu yaz

int main() {
    // async ile başlat ve sonucu yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <future>

int compute() {
    return 42;
}

int main() {
    auto f = std::async(std::launch::async, compute);
    std::cout << f.get();
    return 0;
}

Beklenen çıktı

42

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 İfadeyi rolüne eşle

Kavram Anlamı
std::async(std::launch::async, func) Arka plan başlat
std::launch::async Hemen başlat
std::launch::deferred Ertele
auto f = ... Future sonucu

2 async satırını tamamla

Soru
auto f = std::____(std::launch::async, compute);
Cevap
auto f = std::async(std::launch::async, compute);

Açıklama: std::async, fonksiyonu arka planda çalıştırır.

3 std::async ne döndürür?

  • std::thread
  • std::future Doğru cevap
  • std::function
  • std::promise

Açıklama: std::async sonucu std::future olarak döndürür.

İleri seviye bölümündeki tüm dersler