Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menggunakan operasi atom dalam C++ untuk memastikan keselamatan benang?
Menggunakan operasi atom dalam C++ memastikan keselamatan benang, menggunakan kelas templat std::atomic
dalam C++ untuk memastikan keselamatan benang. . Ini bermakna apabila satu utas menjalankan operasi atom, utas lain tidak boleh mengakses data yang sama pada masa yang sama.
Operasi atom dalam C++C++11 memperkenalkan fail pengepala<atomic></atomic>
, yang menyediakan pelbagai operasi atom, termasuk:
std: :atomic< ;T>
: Kelas templat, mewakili operasi atom jenis atom. std::atomic_flag
: Bendera atom tanpa hujah, mewakili operasi atom jenis Boolean. Std::atomic_init(), std::atomic_load(), std::atomic_store()
dan fungsi lain: fungsi asas untuk operasi atom. #include <atomic> #include <iostream> #include <thread> std::atomic<int> counter{0}; void increment_counter() { for (int i = 0; i < 1000000; ++i) { // 使用原子操作递增计数器 ++counter; } } int main() { // 创建多个线程并发递增计数器 std::thread threads[4]; for (int i = 0; i < 4; ++i) { threads[i] = std::thread(increment_counter); } // 等待所有线程完成 for (int i = 0; i < 4; ++i) { threads[i].join(); } // 打印最终计数器值 std::cout << "Final counter value: " << counter << std::endl; return 0; }Dalam contoh ini, kami menggunakan
std::atomic
Cipta pembilang integer atom dan tambahkan pembilang secara serentak dalam berbilang urutan. Disebabkan oleh penggunaan operasi atom, walaupun berbilang benang mengakses kaunter pada masa yang sama, keselamatan benang akan terjamin dan nilai pembilang yang betul akhirnya akan dikeluarkan. Atas ialah kandungan terperinci Bagaimana untuk menggunakan operasi atom dalam C++ untuk memastikan keselamatan benang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!