多线称 需要重入的有关问题
多线称 需要重入的问题
原来写多线的时候,因为水平原因。 一般在共享资源的时候 采用互斥来控制。
现在我想到了一个问题。 函数重入的问题。
假设 class a 有 A B
两个对象
在A B 的c( int ) 方法中
采用了
class a::c(int m)
{
int a = m+100;
...
...
...
}
如果2个线称同时进入这个函数 就会出现重入的问题
A.c(100);
B.c(200);
两者的数据是否会被相互污染。我不太确定。 如果是的话
那就需要 int *a = new int;
*a = m+100
到最后再delete 掉?
------解决方案--------------------
thread1:
...
A.c(100);
...
thread2:
...
B.c(200);
...
lz是这个意思吧,这里不会有同步问题,A.c和B.c位于不同的栈空间,有不同的上下文环境
原来写多线的时候,因为水平原因。 一般在共享资源的时候 采用互斥来控制。
现在我想到了一个问题。 函数重入的问题。
假设 class a 有 A B
两个对象
在A B 的c( int ) 方法中
采用了
class a::c(int m)
{
int a = m+100;
...
...
...
}
如果2个线称同时进入这个函数 就会出现重入的问题
A.c(100);
B.c(200);
两者的数据是否会被相互污染。我不太确定。 如果是的话
那就需要 int *a = new int;
*a = m+100
到最后再delete 掉?
------解决方案--------------------
thread1:
...
A.c(100);
...
thread2:
...
B.c(200);
...
lz是这个意思吧,这里不会有同步问题,A.c和B.c位于不同的栈空间,有不同的上下文环境