У меня есть два класса - класс 'MyDerived
' является производным от абстрактного базового класса 'MyBase
'.Также PrimaryDerivedClass
также наследует MyBase
.Сначала я создаю экземпляр PrimaryDerivedClass
, который затем создает экземпляры 'MyDerived
'.
MyBase
имеет защищенный метод с именем ProcessThread
, который используется как ThreadPool.QueueUserWorkItem(ProcessThread)
при создании нового экземпляра PrimaryDerivedClass
и MyDerived
созданы.Теперь, когда я хочу остановить все потоки в некотором сценарии, я устанавливаю для некоторой логической переменной volatile значение TRUE, и когда любой другой поток находит значение переменной volatile = TRUE
, он останавливает обработку.
Когда я объявил 'private volatile bool stopThreads
'в MyBase
, я не понял предполагаемого поведения.Однако, когда я сделал это static
или public
, я мог видеть то, что я пытаюсь достичь.Что было бы неправильно в случае private volatile?
Если оставить в стороне вышеуказанное требование, у меня возникает вопрос: Обычно я видел, что volatile переменная объявляется как private.Есть ли какой-то важный аспект, из-за которого он обычно объявляется закрытым?
(Я новичок в многопоточности.)