如果我有课
class A{
A(){
getcontext(context);
makecontext(context, fun1, etc)
put context pointer on queue
}
fun1(args){
something
}
}
在我在CPU1上运行的Thread1中创建一个A类实例,然后尝试从队列中弹出上下文并从CPU2上的thread2交换它,是否会出现问题,因为该对象是在堆栈中实例化的CPU1中的Thread1因此无法访问受到此上下文攻击的fun1指针吗?
答案 0 :(得分:1)
我会说答案是肯定的,不是。所有线程共享相同的内存。如果有多个线程访问该对象,则需要小心在线程之间同步访问。这是肯定的部分。
没有任何部分是你说的线程堆栈1.堆栈变量是函数的本地。如果函数返回,则局部变量不再有效。您没有显示足够的代码来查看创建上下文的位置,以及在堆栈上分配对象的函数是否等待,直到线程2完成。
答案 1 :(得分:0)
没有。线程的全部意义在于它们共享所有内存。