Я борюсь с чем-то очень простым, что я надеюсь, что кто-то может помочь прояснить. Возьмем, к примеру, этот псевдо-код C ++:
class T {
public
QMutex M;
int I;
}
Если я создаю экземпляр этого класса три раза (как 3 потока), существуют ли 3 отдельные и не связанные переменные M и I? Или все 3 экземпляра имеют одну и ту же переменную M и I?
Если у класса есть несколько методов с повторным входом (например, слоты), и они обращаются к M или I, получают ли они доступ к M или I этого одного экземпляра класса?
Как я могу дать каждому INSTANCE класса свою собственную переменную (не доступную для других экземпляров)
Если я создаю экземпляр этого класса три раза (как 3 потока), существуют ли 3 отдельные и не связанные переменные M и I? Или все 3 экземпляра имеют одну и ту же переменную M и I?
Отдельно, потому что эти переменные расположены в стеке, а не в куче. Вы можете разделить значения памяти объектами кучи, если используете указатели, которые указывают на одну и ту же память в разных экземплярах классов.
Если у класса есть несколько реентерабельных методов (например, слотов), и они обращаются к M или I, получают ли они доступ к M или I этого одного экземпляра класса?
Да, если вы используете слоты в экземпляре класса, они получат к ним доступ, если вы явно не попытаетесь получить доступ к другим экземплярам класса.
Как я могу дать каждому INSTANCE класса свою собственную переменную (не доступную для других экземпляров)
Так же, как вы написали выше. 🙂 Хотя, обратите внимание, что вы написали общедоступную доступность, чтобы в конечном итоге вы могли получить к ним доступ из любого экземпляра из любого экземпляра, но, вероятно, это не то, к чему вы пытаетесь обратиться.
Других решений пока нет …