小编Fro*_*ier的帖子

我可以安全地在多线程C++中使用int吗?

我有以下代码.有没有什么能使它成为非线程安全的?

class runner
{
public:
    volatile int exitFlag;

    // construct in thread A
    runner()
    {
        exitFlag = 0;
    }

    // run it in thread B
    void threadFunc()
    {
        // does not matter when the change is getting here
        while (exitFlag == 0)
        {
            // ... do stuff (not using exitFlag)
        }
    }

    // call it from thread A
    void signalThread()
    {
        exitFlag = 1; // only change one bit;
    }
};
Run Code Online (Sandbox Code Playgroud)

我创建了一个runner对象并threadFunc在另一个线程中启动它,一段时间后signalThread从第一个线程调用它.我被告知在不同的线程中访问相同的变量(至少它们是写入)可能导致读取垃圾值.但显然在上面的代码中(因为只改变了一位)并不重要.读/写的顺序也无关紧要.

c++ multithreading thread-safety

4
推荐指数
1
解决办法
235
查看次数

标签 统计

c++ ×1

multithreading ×1

thread-safety ×1