父线程的子线程访问堆栈 我有一个关于C++中多线程的问题。这是我第一次使用回调。如果是愚蠢的问题,请原谅我

父线程的子线程访问堆栈 我有一个关于C++中多线程的问题。这是我第一次使用回调。如果是愚蠢的问题,请原谅我,c++,multithreading,asynchronous,concurrency,callback,C++,Multithreading,Asynchronous,Concurrency,Callback,假设我有两个类,一个是缓存,另一个将使用缓存 class Cache { public: Refresh(){do something with _myCache} private: std::map<...> _myCache; } //Then I have another Class class Processor { public: Processor(){ bindToAThread(Cache::Refresh());

假设我有两个类,一个是缓存,另一个将使用缓存

class Cache
{
public:
    Refresh(){do something with _myCache}
private:
    std::map<...> _myCache;
}
//Then I have another Class
class Processor
{
public:
    Processor(){
        bindToAThread(Cache::Refresh());
        put it into a threadpool
    }
private:
    Cache cache;
}
类缓存
{
公众:
Refresh(){使用_myCache}执行某些操作
私人:
std::map\u myCache;
}
//然后我还有一节课
类处理器
{
公众:
处理器(){
bindToAThread(Cache::Refresh());
把它放到线程池中
}
私人:
缓存;
}
请原谅我的语法

我的朋友告诉我,当Refresh()运行时,它将在主线程的同一个_myCache副本上运行

我不太明白。子线程可以访问其父线程的堆栈吗?我认为同一进程中的线程只共享堆,而不共享堆栈

谁能告诉我为什么

如果没有,有人能告诉我怎么做吗?启动子线程以修改主线程中的某些内容


非常感谢

C++有std;;线程-使用它来启动线程。单个“内存空间”中可以存在一个或多个线程。进程(可能是unix或linux术语)存在于单个内存空间中。术语记忆空间(IMHO)意味着与其他进程隔离。每个linux进程包含1个(主)或更多线程。在Ubuntu 15.10(64)中,每个线程都会获得默认的8MB堆栈。std::threads可以通过指向其他线程在堆栈或堆中创建(可能共享)的数据对象的指针(或引用)启动。线程共享堆并具有不同的堆栈,但如果一个线程知道在哪里查找,则没有什么可以阻止它查看另一个线程的堆栈。这使得共享信息变得非常容易,而流氓指针绝对是一种痛苦。Crom只知道它所在的线程。请查看。