Bagikan melalui


thread Kelas

Menentukan objek yang digunakan untuk mengamati dan mengelola utas eksekusi dalam aplikasi.

Sintaks

class thread;

Keterangan

Anda dapat menggunakan thread objek untuk mengamati dan mengelola utas eksekusi dalam aplikasi. Objek thread yang dibuat dengan menggunakan konstruktor default tidak terkait dengan utas eksekusi apa pun. Objek thread yang dibangun dengan menggunakan objek yang dapat dipanggil membuat utas eksekusi baru dan memanggil objek yang threaddapat dipanggil dalam . Thread objek dapat dipindahkan tetapi tidak disalin, itulah sebabnya utas eksekusi hanya dapat dikaitkan dengan satu thread objek.

Setiap utas eksekusi memiliki pengidentifikasi unik jenis thread::id. Fungsi this_thread::get_id mengembalikan pengidentifikasi utas panggilan. Fungsi thread::get_id anggota mengembalikan pengidentifikasi utas yang dikelola oleh thread objek. Untuk objek yang dibangun thread secara default, thread::get_id metode mengembalikan objek yang memiliki nilai yang sama untuk semua objek yang dibangun thread secara default dan berbeda dari nilai yang dikembalikan oleh this_thread::get_id untuk utas eksekusi apa pun yang dapat digabungkan pada saat panggilan.

Anggota

Kelas Publik

Nama Deskripsi
id Secara unik mengidentifikasi utas terkait.

Konstruktor Publik

Nama Deskripsi
thread Membuat thread objek.

Metode Publik

Nama Deskripsi
detach Mencopot utas terkait dari thread objek.
get_id Mengembalikan pengidentifikasi unik utas terkait.
hardware_concurrency Statis. Mengembalikan perkiraan jumlah konteks utas perangkat keras.
join Memblokir hingga utas terkait selesai.
joinable Menentukan apakah utas terkait dapat digabungkan.
native_handle Mengembalikan jenis khusus implementasi yang mewakili handel utas.
swap Menukar status objek dengan objek tertentu thread .

Operator Publik

Nama Deskripsi
thread::operator= Mengaitkan utas dengan objek saat ini thread .

Persyaratan

Header: <thread>

kumpulan nama XML: std

detach

Mencopot utas terkait. Sistem operasi menjadi bertanggung jawab untuk merilis sumber daya utas pada penghentian.

void detach();

Keterangan

Setelah panggilan ke detach, panggilan berikutnya untuk get_id mengembalikan id.

Jika utas system_error yang terkait dengan objek panggilan tidak dapat digabungkan, fungsi akan melemparkan yang memiliki kode invalid_argumentkesalahan .

Jika utas system_error yang terkait dengan objek panggilan tidak valid, fungsi melemparkan yang memiliki kode no_such_processkesalahan .

get_id

Mengembalikan pengidentifikasi unik untuk utas terkait.

id get_id() const noexcept;

Nilai hasil

Objek id yang secara unik mengidentifikasi utas terkait, atau id() jika tidak ada utas yang terkait dengan objek.

hardware_concurrency

Metode statis yang mengembalikan perkiraan jumlah konteks utas perangkat keras.

static unsigned int hardware_concurrency() noexcept;

Nilai hasil

Perkiraan jumlah konteks utas perangkat keras. Jika nilai tidak dapat dihitung atau tidak ditentukan dengan baik, metode ini mengembalikan 0.

Khusus Microsoft

hardware_concurrency mengembalikan jumlah prosesor logis, yang sesuai dengan jumlah utas perangkat keras yang dapat dijalankan secara bersamaan. Ini memperhitungkan jumlah prosesor fisik, jumlah inti di setiap prosesor fisik, dan multithreading simultan pada setiap inti tunggal.

Sebelum Windows 11 dan Windows Server 2022, aplikasi dibatasi secara default ke satu grup prosesor, memiliki paling banyak 64 prosesor logis. Ini membatasi jumlah utas yang dieksekusi secara bersamaan menjadi 64. Untuk informasi selengkapnya, lihat Grup Prosesor.

Dimulai dengan Windows 11 dan Windows Server 2022, proses dan utasnya memiliki afinitas prosesor yang secara default mencakup semua prosesor dalam sistem dan di beberapa grup pada komputer dengan lebih dari 64 prosesor. Batas jumlah utas bersamaan sekarang adalah jumlah total prosesor logis dalam sistem.

id kelas

Menyediakan pengidentifikasi unik untuk setiap utas eksekusi dalam proses.

class thread::id {
    id() noexcept;
};

Keterangan

Konstruktor default membuat objek yang tidak dibandingkan thread::id dengan objek untuk utas yang ada.

Semua objek yang dibangun default membandingkan thread::id sama.

join

Memblokir hingga alur eksekusi yang terkait dengan objek panggilan selesai.

void join();

Keterangan

Jika panggilan berhasil, panggilan berikutnya ke get_id untuk objek panggilan mengembalikan default thread::id yang tidak dibandingkan thread::id dengan utas yang ada; jika panggilan tidak berhasil, nilai yang dikembalikan oleh get_id tidak berubah.

joinable

Menentukan apakah utas terkait dapat digabungkan.

bool joinable() const noexcept;

Nilai hasil

true jika utas terkait dapat digabungkan; jika tidak, false.

Keterangan

Objek utas dapat digabungkan jika get_id() != id().

native_handle

Mengembalikan jenis khusus implementasi yang mewakili handel utas. Handel utas dapat digunakan dengan cara khusus implementasi.

native_handle_type native_handle();

Nilai hasil

native_handle_type didefinisikan sebagai pemeran Win32 HANDLE sebagai void *.

thread::operator=

Mengaitkan utas objek tertentu dengan objek saat ini.

thread& operator=(thread&& Other) noexcept;

Parameter

Other
Objek thread.

Nilai hasil

*this

Keterangan

Metode memanggil lepaskan jika objek panggilan dapat digabungkan.

Setelah asosiasi dibuat, Other diatur ke status yang dibuat secara default.

swap

Menukar status objek dengan objek tertentu thread .

void swap(thread& Other) noexcept;

Parameter

Other
Objek thread.

Konstruktor thread

Membuat thread objek.

thread() noexcept;
template <class Fn, class... Args>
explicit thread(Fn&& F, Args&&... A);

thread(thread&& Other) noexcept;

Parameter

F
Fungsi yang ditentukan aplikasi untuk dijalankan pada utas.

A
Daftar argumen yang akan diteruskan ke F.

Other
Objek yang thread sudah ada.

Keterangan

Konstruktor pertama membangun objek yang tidak terkait dengan utas eksekusi. Nilai yang dikembalikan oleh get_id untuk objek yang dibangun adalah thread::id().

Konstruktor kedua membangun objek yang terkait dengan utas eksekusi baru. Ini menjalankan fungsi INVOKE pseudo yang ditentukan dalam <functional>. Jika tidak cukup sumber daya yang tersedia untuk memulai utas system_error baru, fungsi melemparkan objek yang memiliki kode resource_unavailable_try_againkesalahan . Jika panggilan untuk F mengakhiri dengan pengecualian yang tidak tertangkap, terminate dipanggil.

Konstruktor ketiga membuat objek yang terkait dengan utas yang terkait dengan Other. Other kemudian diatur ke status yang dibuat secara default.

Lihat juga

Referensi File Header
<thread>