溫馨提示×

c++ input怎樣實(shí)現(xiàn)多線程安全

c++
小樊
85
2024-07-25 01:41:12
欄目: 編程語言

在C++中實(shí)現(xiàn)多線程安全的輸入可以通過使用互斥鎖(mutex)來保護(hù)共享資源。下面是一個(gè)簡單的示例代碼:

#include <iostream>
#include <thread>
#include <mutex>

std::mutex mtx;

void getInput() {
    mtx.lock();
    std::cout << "Enter a number: ";
    int num;
    std::cin >> num;
    std::cout << "You entered: " << num << std::endl;
    mtx.unlock();
}

int main() {
    std::thread t1(getInput);
    std::thread t2(getInput);

    t1.join();
    t2.join();

    return 0;
}

在上面的示例中,我們使用了一個(gè)互斥鎖mtx來保護(hù)輸入輸出操作。當(dāng)一個(gè)線程進(jìn)入getInput函數(shù)時(shí),它會(huì)首先鎖住互斥鎖,然后進(jìn)行輸入輸出操作,最后再釋放互斥鎖。這樣可以確保每次只有一個(gè)線程在進(jìn)行輸入操作,從而避免多個(gè)線程同時(shí)操作輸入流導(dǎo)致數(shù)據(jù)混亂的情況發(fā)生。

通過使用互斥鎖,我們可以實(shí)現(xiàn)多線程安全的輸入輸出操作。需要注意的是,互斥鎖的使用需要謹(jǐn)慎,避免死鎖等問題的發(fā)生。

0