Может ли переменная быть как статической, так и нестабильной в многопоточной среде - PullRequest
0 голосов
/ 05 ноября 2019

Я устанавливаю два потока для своего приложения и объявляю переменную с именем x, которая будет получать входные данные из одного потока и использоваться в другом потоке для выполнения функции, так как она может изменяться в любое время,Я считаю, что он должен быть нестабильным и глобальным. в этом случае я могу объявить переменную как static volatile x?

Если да, может кто-то пролить свет на это?

1 Ответ

2 голосов
/ 05 ноября 2019

Это разные понятия:

  • static предоставляет информацию о связи. Это означает, что переменная или функция будут известны только текущему модулю компиляции (исходный файл). Имя не будет в объектном файле.

  • volatile сообщает компилятору, что значение переменной может измениться из внешнего источника или события. Например, флаг, который устанавливается подпрограммой обработки прерывания при возникновении прерывания. В результате некоторые оптимизации компилятора, предполагающие, что значение переменной не изменяется, будут отключены.

Так что да, переменная может быть как статической, так и энергозависимой в многопоточной среде.

...