0Pricing
C++ Academy · Ders

std::thread Birleştirme ve Ayırma

std::thread ile iş parçacıkları oluşturun ve join ile detach arasında seçim yapın

std::thread Birleştirme ve Ayırma, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 1. 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.

std::thread Sınıfı

<thread> başlığı, C++11'de iş parçacığı kullanımını standart kitaplığa getirdi. Her std::thread örneği bir OS iş parçacığını temsil eder.

İş Parçacığı Oluşturma

Yapıcıya bir çağrılabilir nesne (işlev, lambda veya işlev nesnesi) geçirin. İş parçacığı hemen çalışmaya başlar.

#include <thread>
#include <iostream>

void worker() { std::cout << "running on thread\n"; }

int main() {
    std::thread t(worker);
    t.join();    // wait for it to finish
}

Argüman Geçirme

Argümanları yapıcı aracılığıyla çağrılabilir nesneye iletin.

std::thread t([](int n) { std::cout << n; }, 42);
t.join();

Başvuru Yoluyla Geçirme

Argümanları başvuru yoluyla geçirmek için std::ref kullanın. Aksi hâlde iş parçacığı kopyaları alır.

int counter = 0;
std::thread t([](int& c) { ++c; }, std::ref(counter));
t.join();
std::cout << counter;   // 1

join(): Tamamlanmayı Bekleme

Hedef tamamlanana kadar çağıran iş parçacığını engellemek için join() çağrısını yapın. join işleminden sonra iş parçacığı artık birleştirilebilir değildir.

detach(): Bağımsız Çalıştırma

İş parçacığını bağımsız olarak çalıştırmak için detach() çağrısını yapın. std::thread yok edildikten sonra da çalışmaya devam eder. İş parçacığı sona erdiğinde kaynaklar OS tarafından serbest bırakılır.

std::thread t([]() { /* background work */ });
t.detach();   // we no longer track it

joinable()

İş parçacığının join veya detach işlemi için uygun olup olmadığını denetleyin. join veya detach uygulanmış bir iş parçacığı artık bu işlemler için uygun değildir.

Birleştirmeyi Unutma: Sonlandırma

Bir std::thread hâlâ birleştirilebilir durumdayken yok edilirse program std::terminate çağrısını yapar. Yok etmeden önce her zaman join veya detach uygulayın.

RAII Sarmalayıcısı

Yıkıcıda join işlemini yapan küçük bir RAII sarmalayıcısı yazın. Alternatif olarak std::jthread (C++20) kullanabilirsiniz; bu sınıf otomatik olarak join işlemini yapar.

#include <thread>
// C++20
std::jthread t([] { /* work */ });
// t joins automatically when destroyed

Donanım Eşzamanlılığı

std::thread::hardware_concurrency() ile donanım iş parçacıklarının sayısını sorgulayın. Bu sayıyı iş parçacığı havuzlarının boyutunu belirlemek için kullanın.

İş Parçacığı Kimlikleri

Her iş parçacığının benzersiz bir ID değeri vardır. Geçerli iş parçacığının ID değerini std::this_thread::get_id() ile alın.

İş Parçacığını Uyutma

Geçerli iş parçacığını duraklatmak için std::this_thread::sleep_for(duration) kullanın.

#include <chrono>
using namespace std::chrono_literals;
std::this_thread::sleep_for(500ms);

Kısa Kontrol

Birleştirilebilir bir std::thread, join() veya detach() çağrılmadan önce yok edilirse ne olur?

Özet

İş parçacıklarını std::thread ve bir çağrılabilir nesneyle oluşturun. İş parçacığı nesnesi yok edilmeden önce her zaman join() veya detach() çağrısını yapın; ya da otomatik olarak join yapan std::jthread (C++20) kullanın.

Sıkça Sorulan Sorular

“std::thread Birleştirme ve Ayırma” dersi ücretsiz mi?

Evet — “std::thread Birleştirme ve Ayırma” 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::thread Birleştirme ve Ayırma” dersinde ne öğreneceğim?

std::thread ile iş parçacıkları oluşturun ve join ile detach arasında seçim yapı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 1. dersidir.

“std::thread Birleştirme ve Ayırma” 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