c++ 面向对象的静态函数 多线程调用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ 面向对象的静态函数 多线程调用相关的知识,希望对你有一定的参考价值。
我想问下,我有两个线程调用同一份静态代码用不用加锁进行一下保护啊?比如:
Class A中 定义
static int ReadXX(); .....
我在线程Thread1中调用
void run()
while(1)
int x=A::ReadXX();
在Thread2线程中也调用
void run()
while(1)
int c=A::ReadXX();
在调研A::ReadXX()的时候用不用 添加一个全局MUTEX 进行保护啊??
我是想,因为静态函数,在类内存中只有一份,那么我两个线程同时调用的时候会不会出问题?
我是在想,因为他是静态代码,在类的内存中只有一份,那么我在两个线程同时调用会不会出问题?静态函数有读有写,但是读写的不是同一个文件,通过参数传递进去,读写不同的文件
追答无论是静态函数还是非静态函数 函数字节码在内存中都只有一份,区别在于非静态函数的调用绑定了 对象的this指针。代码公用不会有问题,问题在于影响代码执行的数据在多线程下是否安全。你得更细致的了解一下编译和加载过程。这个静态函数有木有修改一些共享的变量?如果有,那可能会出问题。
参考技术A 你自己试一下不就知道了 别人说的不一定对 不要什么都拿来问以上是关于c++ 面向对象的静态函数 多线程调用的主要内容,如果未能解决你的问题,请参考以下文章