我似乎无法在 Google 上找到答案。我基本上想知道两个线程是否可以同时访问此类普通/成员函数并且不会导致未定义的行为,或者我是否必须使用互斥体?
void foo(void)
{
float x(133.7);
float y(10);
std::cout << std::endl << (x * y);
}
void foobar(void)
{
std::cout << std::endl << 1/1;
}
最佳答案
我很确定您的代码没有未定义的行为。
也就是说,您正在使用共享数据,即 std::cout
.
所以如果你期望 std::cout << std::endl << (x * y)
要作为单个操作执行(例如,为了防止不同线程的输出位在标准输出上交错),您将必须使用锁。
关于c++ - 在多线程应用程序中,如果函数不修改/读取数据或修改/读取临时数据,2个以上线程可以访问同一个函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7502701/