0Pricing
C++ Academy · Ders

std::async ve std::future Temelleri

Görevleri eşzamansız çalıştırın ve sonuçlarını std::future aracılığıyla alın

std::async ve std::future Temelleri, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.

Eşzamansız Görevler

std::async bir işlevi eşzamansız olarak çalıştırır ve sonucu sağlayan bir std::future döndürür. Bu, iş parçacıklarını elle yönetmeye göre daha üst düzey bir alternatiftir.

Temel Kullanım

Çağrılabilir bir nesne ve bağımsız değişkenleri aktarın. std::async bir std::future<Result> döndürür.

#include <future>

int compute() { return 42; }

std::future<int> f = std::async(compute);
int result = f.get();   // blocks until done

Çalıştırma İlkeleri

İlk bağımsız değişken, görevin ne zaman çalışacağını denetler:

  • std::launch::async — hemen yeni bir iş parçacığı başlatır
  • std::launch::deferred — get() çağrıldığında eşzamanlı olarak çalışır
  • Varsayılan (ilke belirtilmez) — seçimi uygulama yapar
auto f = std::async(std::launch::async, compute);

std::future Yöntemleri

Yaygın işlemler:

  • get() — işlem tamamlanana kadar engeller ve sonucu döndürür (yalnızca bir kez)
  • wait() — engeller ancak sonucu döndürmez
  • wait_for(d) / wait_until(t) — zaman aşımlı beklemeler
  • valid() — bu gelecek nesnesi kurulmuş mu?

İstisna Yayılımı

Eşzamansız görev bir istisna fırlatırsa istisna gelecek nesnesinde saklanır ve get() çağrısında yeniden fırlatılır.

auto f = std::async([] { throw std::runtime_error("oops"); });
try {
    f.get();
} catch (const std::exception& e) {
    std::cout << e.what();
}

Birden Çok Değer Döndürme

Sonucu bir demet, yapı veya kapsayıcı içine sarın.

auto f = std::async([] {
    return std::make_pair(42, std::string("hello"));
});
auto [n, s] = f.get();

Birden Çok Görevi Paralel Çalıştırma

Birkaç eşzamansız görev başlatın ve tümünün tamamlanmasını bekleyin.

auto a = std::async(work_a);
auto b = std::async(work_b);
auto c = std::async(work_c);

std::cout << a.get() + b.get() + c.get();

std::promise: Elle Yönetilen Gelecek Nesnesi

Tüketicinin bir gelecek nesnesine ihtiyaç duyduğu, ancak üreticinin başka bir iş parçacığında bulunduğu üretici/tüketici örüntülerinde std::promise kullanın.

std::promise<int> p;
std::future<int> f = p.get_future();

std::thread t([&p] { p.set_value(42); });
std::cout << f.get();
t.join();

std::packaged_task

Çağrılabilir bir nesneyi gelecek nesnesiyle bir araya getirir. Görev başka bir yerde çağrıldığında (iş parçacığı havuzu gibi) kullanışlıdır.

shared_future

Bir std::future yalnızca bir kez okunabilir. std::shared_future birden çok okuyucuya izin verir; sonucu yayınlamak için kullanışlıdır.

Yıkıcı Davranışı

Varsayılan ilkeyle std::async tarafından döndürülen bir gelecek nesnesinin yıkıcısı, görev tamamlanana kadar engelleyebilir. Uzun süren görevlerde bunu göz önünde bulundurun.

std::async Ötesi

Üretim kalitesinde eşzamansız işlemler için Boost.Asio, Folly veya C++20/23 yürütücülerini ve koroutinlerini değerlendirin. std::async bir başlangıç noktasıdır.

Kısa Denetim

Bir std::future üzerinde .get() çağrısı yapmak ne işe yarar?

Özet

std::async bir işlevi eşzamansız olarak çalıştırır; döndürülen std::future sonucu sağlar ve istisnaları yayar. Yürütmeyi denetlemek için çalıştırma ilkelerini kullanın. Karmaşık örüntüler için std::promise ve std::packaged_task kullanın.

Sıkça Sorulan Sorular

“std::async ve std::future Temelleri” dersi ücretsiz mi?

Evet — “std::async ve std::future Temelleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.

“std::async ve std::future Temelleri” dersinde ne öğreneceğim?

Görevleri eşzamansız çalıştırın ve sonuçlarını std::future aracılığıyla alın C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C++ Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“std::async ve std::future Temelleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. std::thread Birleştirme ve Ayırma
  2. std::mutex, lock_guard ve unique_lock
  3. Koşul Değişkenleri ve İşçi Kalıpları
  4. std::async ve std::future Temelleri
← C++ Academy Sayfasına Dön