操作系统中的互斥
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********************
相关文章:
- 在C++中设置基于操作系统的文件路径
- 如何在工厂方法中返回指向基于基础操作系统的派生类的有效指针
- WideCharToMultiByte在英语操作系统上不转换日语
- 如何在 Windows 操作系统中在 geany 中安装插件
- 操作系统平台支持宏和提升库
- 从utsname找出Linux操作系统名称
- 为什么 free() 函数不将内存返回给操作系统?
- 我可以让编译器忽略特定于操作系统的方法吗?
- 有没有办法获取用户操作系统的ANSI转义码?
- 测试操作系统时执行程序集"sti"时虚拟框崩溃
- 如何应用 printers.py 修改?(Linux操作系统)
- LINUX 操作系统上的错误:令牌之前预期的构造函数、析构函数或类型转换'('?
- 当PSO细粒度策略对使用AdsGetObject MSDN API的Windows操作系统生效时,如何获取用户密码到期日
- 操作系统如何检测进程崩溃
- 检查操作系统兼容性
- 操作系统 (Linux) 在使用 boost::asio::generic::raw_protocol::socket
- 检测到由于操作系统内存不足而导致子进程终止
- 在Windows 10操作系统中扩展控制台
- 如何从支持linux/mac操作系统的第三方代码为我的c#项目创建dll
- 读取USB与操作系统、C++之间传输的数据