相关疑难解决方法(0)

C,C++非同步线程返回奇怪的结果

好吧,我有一个关于线程的问题.

有两个未同步的线程同时运行并使用全局资源"int num"1st:

    void Thread()
{ 
    int i;
    for ( i=0 ; i < 100000000; i++ )
    {
        num++;
        num--;
    }
}
Run Code Online (Sandbox Code Playgroud)

第二:

    void Thread2()
{ 
    int j;
    for ( j=0 ; j < 100000000; j++ )
    {
        num++;
        num--;      
    }
}
Run Code Online (Sandbox Code Playgroud)

问题陈述:程序结束时变量"num"的可能值是什么.现在我会说0将是程序结束时num的值,但是,尝试运行此代码,你会发现结果是随机的,我不明白为什么?

完整代码:

 #include <windows.h>
    #include <process.h>
    #include <stdio.h>

    int static num=0;

   void Thread()
    { 
        int i;
        for ( i=0 ; i < 100000000; i++ )
        {
            num++;
            num--;
        }
    }

   void Thread2()
    { 
        int j;
        for ( j=0 …
Run Code Online (Sandbox Code Playgroud)

c c++ multithreading thread-safety

5
推荐指数
1
解决办法
833
查看次数

标签 统计

c ×1

c++ ×1

multithreading ×1

thread-safety ×1