Предположим, что у меня есть массив, определяемый следующим образом:
volatile char v[2];
И у меня есть два потока (обозначаемые соответственно A, B), управляющие массивом v
. Если я гарантирую, что A, B используют разные индексы в любое время, то есть, если A теперь манипулирует v[i]
, тогда B ничего не делает или не манипулирует v[1-i]
. Интересно, нужна ли синхронизация для этой ситуации?
Я упомянул этот вопрос, однако я думаю, что он ограничен на Java. Причина, по которой я задаю этот вопрос, заключается в том, что я изо всех сил пытаюсь справиться со странной и редкой ошибкой в большом проекте в течение нескольких дней, и до сих пор единственная причина, по которой я мог бы объяснить эту ошибку, заключается в том, что синхронизация необходима для выше манипуляции. (Поскольку ошибка встречается очень редко, мне трудно доказать, истинна ли моя гипотеза)
Изменить: как чтение, так и изменение возможны для v
.