0Pricing
C++ Academy · Pelajaran

std::thread: Menggabungkan dan Melepaskan

Buat thread dengan std::thread dan pilih antara join atau detach

std::thread: Menggabungkan dan Melepaskan adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.

Kelas std::thread

Header <thread> memperkenalkan dukungan utas ke pustaka standar dalam C++11. Setiap instans std::thread mewakili satu utas OS.

Membuat Utas

Berikan objek yang dapat dipanggil (fungsi, lambda, funktor) kepada konstruktor. Utas mulai berjalan segera.

#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
}

Meneruskan Argumen

Teruskan argumen kepada objek yang dapat dipanggil melalui konstruktor.

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

Meneruskan melalui Referensi

Gunakan std::ref untuk meneruskan argumen melalui referensi. Tanpanya, utas menerima salinan.

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

join(): Menunggu Penyelesaian

Panggil join() untuk memblokir utas pemanggil hingga utas sasaran selesai. Setelah join, utas tersebut tidak lagi dapat digabungkan.

detach(): Berjalan Secara Mandiri

Panggil detach() agar utas berjalan secara mandiri. Utas tersebut terus berjalan setelah std::thread dihancurkan. Sumber daya dilepaskan oleh OS ketika utas berakhir.

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

joinable()

Periksa apakah utas dapat digabungkan atau dilepas. Utas yang telah digabungkan atau dilepas tidak lagi dapat digabungkan.

Lupa Melakukan Join: Terminasi

Jika std::thread dihancurkan saat masih dapat digabungkan, program memanggil std::terminate. Selalu lakukan join atau detach sebelum penghancuran.

Pembungkus RAII

Tulislah pembungkus RAII kecil yang melakukan join di destruktor. Atau gunakan std::jthread (C++20)—objek tersebut melakukan join secara otomatis.

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

Konkurensi Perangkat Keras

Periksa jumlah utas perangkat keras dengan std::thread::hardware_concurrency(). Gunakan hasilnya untuk menentukan ukuran kumpulan utas.

ID Utas

Setiap utas memiliki ID unik. Dapatkan ID utas saat ini dengan std::this_thread::get_id().

Menidurkan Utas

Gunakan std::this_thread::sleep_for(duration) untuk menjeda utas saat ini.

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

Pemeriksaan Singkat

Apa yang terjadi jika std::thread yang masih dapat digabungkan dihancurkan sebelum join() atau detach() dipanggil?

Ringkasan

Buat utas dengan std::thread dan objek yang dapat dipanggil. Selalu lakukan join() atau detach() sebelum objek utas dihancurkan—atau gunakan std::jthread (C++20) yang melakukan join otomatis.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “std::thread: Menggabungkan dan Melepaskan” gratis?

Ya — teks lengkap “std::thread: Menggabungkan dan Melepaskan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “std::thread: Menggabungkan dan Melepaskan”?

Buat thread dengan std::thread dan pilih antara join atau detach Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C++ Academy?

Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “std::thread: Menggabungkan dan Melepaskan” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?

Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. std::thread: Menggabungkan dan Melepaskan
  2. std::mutex, lock_guard, dan unique_lock
  3. Variabel Kondisi dan Pola Pekerja
  4. Dasar std::async dan std::future
← Kembali ke C++ Academy