Предположим, у меня есть энергонезависимое поле 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 внизу обрезана:
... here my flash game + html table with players ...