Я новичок в потоковом режиме на С++, и я пытаюсь получить четкое представление о том, как память делится/не делится между потоками. Я использую std::thread
с С++ 11.
Из того, что я прочитал по другим вопросам SO, стек принадлежит только один поток, а куча используется совместно с потоками. Поэтому из того, что, как мне кажется, я понимаю о стеке против кучи, должно быть верно следующее:
#include <thread>
using namespace std;
class Obj {
public:
int x;
Obj(){x = 0;}
};
int main() {
Obj stackObj;
Obj *heapObj = new Obj();
thread t([&]{
stackObj.x++;
heapObj->x++;
});
t.join();
assert(heapObj->x == 1);
assert(stackObj.x == 0);
}
Простите меня, если я испортил кучу вещей, синтаксис лямбда очень для меня. Но, надеюсь, все, что я пытаюсь сделать, является последовательным. Будет ли это работать так, как я ожидаю? А если нет, то что я недопонимаю?