操作系统中的互斥

Mutex in Operating System

本文关键字:操作系统      更新时间:2023-10-16

在c/c++中控制台输入/输出时,互斥机制是否出现

我的意思是,控制台流会受到Mutex的保护,并以通常的方式被线程锁定/解锁吗?

Yes用std::mutex包装输出将确保单独的线程不会同时访问流。当cout与stdio(默认行为(同步时,单独调用它是安全的,尽管不能保证多个线程中字符的插入顺序。

考虑

#include <iostream>
#include <mutex>
#include <thread>
std::mutex mx;
void print(char ch, int count)
{
    std::lock_guard<std::mutex> lock(mx);
    for (int i = 0; i < count; ++i)
    {
        std::cout << ch;
    }
    std::cout << std::endl;
}   
int main() {
     std::thread t1(print, 'x', 10);
     std::thread t2(print, '*',20);
     t1.join();
     t2.join();
     return 0;
}

对于互斥对象,输出为(实际示例(:

xxxxxxxxxx
********************

如果没有互斥,一个可能的输出是(实际示例(:

xxxxxxxxxx********************