Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Lulus Rujukan Objek Perpustakaan Standard C kepada Benang Tanpa Ralat Penyusunan?

Bagaimana untuk Lulus Rujukan Objek Perpustakaan Standard C kepada Benang Tanpa Ralat Penyusunan?

Susan Sarandon
Lepaskan: 2024-11-20 15:29:11
asal
345 orang telah melayarinya

How to Pass C   Standard Library Object References to Threads Without Compilation Errors?

Melalukan Argumen Rujukan Objek kepada Fungsi Benang: Mengatasi Ralat Penyusunan

Melalukan rujukan kepada objek perpustakaan standard C 11, seperti std::ostream , kepada fungsi benang boleh menghadapi masalah penyusunan. Ini kerana utas, secara lalai, menyalin hujahnya.

Untuk menghantar rujukan secara eksplisit, bungkusnya dengan std::ref atau std::cref untuk rujukan berterusan. Berikut ialah versi diubah suai bagi contoh yang disediakan:

void foo(std::ostream &os) {
    // Do something with os
    os << "This should be printed to os" << std::endl;
}

int main() {
    std::thread t(foo, std::ref(std::cout));
    t.join(); // Wait for the thread to complete
    return 0;
}
Salin selepas log masuk

Dengan menggunakan std::ref, anda mencipta pembalut rujukan yang berkelakuan seperti objek nilai-semantik. Berbilang salinan pembungkus akan merujuk kepada rujukan asas yang sama, membenarkan utas mengakses objek std::ostream dengan betul.

Ingat untuk memastikan objek yang dirujuk kekal sah sepanjang hayat utas.

Atas ialah kandungan terperinci Bagaimana untuk Lulus Rujukan Objek Perpustakaan Standard C kepada Benang Tanpa Ralat Penyusunan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan