gpt4 book ai didi

c++ - scanf(), std::cin 在多线程环境下如何表现?

转载 作者:可可西里 更新时间:2023-11-01 18:09:02 27 4
gpt4 key购买 nike

我想用一个例子来说明我的问题。

假设有一组 N/*(N>>1)*/ 线程被设置为运行这个函数:

void Process() {
//Some thread safe processing which requires in-deterministic computation time

unsigned char byte;
std::cin >> byte;
}

一旦所有这些都同时启动,会发生什么?如何处理并发 std::cin 访问?在控制台上操作的最终用户会看到/体验到什么?

编辑:我还想补充一件事。下面的代码是否足够安全,可以放弃仅在一个(可能是主线程)线程中使用 std:cin 的想法?

void Process() {
//Some thread safe processing which requires in-deterministic computation time

//Mutex lock
unsigned char byte;
std::cin >> byte;
//Mutex unlock
}

最佳答案

我想说,如果没有互斥锁,结果是不可预测的。

如果你使用互斥锁,一切都很好。这就是互斥锁的用途。

关于c++ - scanf(), std::cin 在多线程环境下如何表现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18844239/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com