Всем привет, решил начать изучать многопоточность. Есть допустим у меня такой вот класс:
class Sphere {
vec2 position;
vec2 size;
float rotation;
void onProgress() {
...
}
void onRender(Camera camera) {
...
}
}
Я хочу сделать, чтобы рендеринг выполнялся в одном потоке, а onProgress в другом, т.е. onRender по сути, может только считывать данные position, size и rotation. В общем если я делаю как-то так:
class Application {
void onProgress() {
sphere.onProgress();
...
}
void onProgressRun() {
while (running) {
onProgress();
}
}
void onRender() {
sphere.onRender(camera);
...
}
void loop() {
new Thread(&onProgressRun()).start();
while (running) {
...
onRender();
}
}
}
В общем это вроде бы работает, но мне кажется что так делать наверное не стоит, что произойдет, если я попытаюсь у sphere изменить position или любой другой аттрибут в основном потоке, к примеру в Application.onProgress, наверное нужно делать синхронизации? Или вообще то, каким образом я делаю не правильно? как правильнее подобную логику делать?