Как правильно читать поле Interlocked.Increment'ed int?

Предположим, у меня есть энергонезависимое поле int и поток, который Interlocked.Increment его. Может ли другой поток безопасно прочитать это напрямую, или чтение также должно быть заблокировано?

Ранее я думал, что мне нужно использовать блокированное чтение, чтобы гарантировать, что я вижу текущее значение, поскольку, в конце концов, поле не является изменчивым. Я использовал Interlocked.CompareExchange (int, 0, 0) , чтобы добиться этого.

Однако я наткнулся на этот ответ , который предполагает, что на самом деле обычное чтение будет всегда видеть текущую версию значения Interlocked.Increment ed, а поскольку чтение int уже является атомарным, делать что-либо особенное не нужно. Я также нашел запрос, в котором Microsoft отклоняет запрос Interlocked.Read (ref int) , что также предполагает полную избыточность. какую функцию JavaScript или CSS можно здесь использовать - если я не хочу включать jQuery только для одного вызова $ (# fb-root) .offset () ?

Я также просмотрел их библиотеку http://api.odnoklassniki.ru//js/fapi.js , но в ней нет такой функции.

ОБНОВЛЕНИЕ

Я добавил два вызова предупреждений в свой исходный код выше, но они печатают только

clientHeight 0
offsetHeight 0

ОБНОВЛЕНИЕ

Следующий код, кажется, теперь хорошо работает для моего приложения iframe в Google Chrome и Mozilla. Firefox, независимо от того, сколько
я добавлю для его тестирования. Но с Internet Explorer не удается изменить размер окна, и предупреждение показывает top = 1107 вместо top = 1157 в Google Chrome, поэтому таблица html внизу обрезана:

preferans

... here my flash game + html table with players ...






6
задан Alexander Farber 26 October 2019 в 14:19
поделиться