gpt4 book ai didi

c++ - 了解不同处理器之间的操作系统调度

转载 作者:行者123 更新时间:2023-11-28 06:40:04 26 4
gpt4 key购买 nike

如果我有课

class A{
A(){
getcontext(context);
makecontext(context, fun1, etc)
put context pointer on queue
}

fun1(args){
something
}
}

我在CPU1上运行的Thread1中创建一个类A的实例,然后尝试将上下文从队列中弹出并从CPU2上的线程2换入,会不会有问题,因为对象是在堆栈中实例化的CPU1 中的 Thread1 以及指向被攻击到此上下文的 fun1 的指针无法访问?

最佳答案

我会说答案是肯定的,也不是。所有线程共享相同的内存。如果超过 1 个线程访问该对象,则需要注意同步线程之间的访问。这是肯定的部分。

当您说线程 1 的堆栈时,没有部分。堆栈变量是函数的局部变量。如果函数返回,则局部变量不再有效。您没有显示足够多的代码让我看到在哪里创建上下文,以及在堆栈上分配对象的函数是否等待线程 2 完成。

关于c++ - 了解不同处理器之间的操作系统调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26134109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com