主线程的代码文件和子线程的代码文件同时包含一个头文件,头文件中定义了static类型的全局变量。程序执行时,主线程首先改变全局变量值,然后子线程开始运行,在子线程中发现,该全局变量仍是缺省的值,而不是主线程中已经赋给的值。即出现了这样的问题:虽然我只定义了一个全局变量,但是在主线程和子线程中,访问这个全局变量时,体现出来的却是两个全局变量。是什么问题?应该怎样解决?请高手指点。

解决方案 »

  1.   

    同上,加上volatile关键字修饰符,关闭关闭编译器可能的优化,访问该变量都从该变量地址中去读取数据,而不是从寄存器中去取
      

  2.   

    全局变量前用volatile关键字。
      

  3.   

    全局变量用volatile修饰,
    编译器优化,访问该变量都从该变量地址中去读取数据,而不是从寄存器中去取,
    加volatile,申明总是从地址中去读取数据,
      

  4.   

    另外头文件中声明全局变量,
    编译时是将声明变量代码直接插入的,
    不同的引用文件,很可能操作的是不同的变量
    比如
    在。h
    申明int aa;在1。cpp
    中包含 .h引用aa和在2.cpp 包含。h引用aa
    两个aa是不一样的,不是一个东西楼主你声明错地方了,应该在。cpp文件声明在。h文件extern