Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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 thread
dapat 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_argument
kesalahan .
Jika utas system_error
yang terkait dengan objek panggilan tidak valid, fungsi melemparkan yang memiliki kode no_such_process
kesalahan .
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_again
kesalahan . 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.