C# многопоточный неподписанный инкремент

Если у вас есть что-то вроде этого:

html, body { height: 100%; overflow:auto; }

Если определение body и html имеет определение высоты 100%, а также включена прокрутка, window.scrollTo (и все производные механизмы прокрутки) не работают, несмотря на отображаемую полосу прокрутки (которая может использоваться пользователем), когда содержимое превышает этот 100% роста. Это потому, что полоса прокрутки, которую вы видите, - это не окно, а тело.

Решение:

html { height: 100%; overflow:auto; }
body { height: 100%; }
15
задан Mike Schenk 14 October 2011 в 21:01
поделиться

3 ответа

Вы говорите, что не хотите использовать блокировку по соображениям производительности - но есть ли у вас это тестировал? Неоспоримая блокировка (которая, судя по всему, так и есть) довольно дешевая.

Я обычно предпочитаю «очевидно правильный», а не «умный и, возможно, более эффективный», когда дело доходит до потоковой передачи (и в целом , но особенно для потоковой передачи).

Протестируйте свое приложение с блокировкой и без нее и посмотрите, заметите ли вы разницу. Если блокировка дает существенную разницу , тогда, конечно, используйте хитрость. В противном случае я бы просто использовал блокировку.

Одна вещь, которую вы могли бы сделать, это использовать Interlocked.

41
ответ дан 1 December 2019 в 01:17
поделиться

Если вам действительно нужен полный диапазон беззнакового int (2 ^ 32-1), а не подписанного int (2 ^ 31-1), вы можете преобразовать его в int64 (есть перегрузка Interlocked.Increment , которая принимает int64), а затем приводит к беззнаковому int.

11
ответ дан 1 December 2019 в 01:17
поделиться

вы можете объявить uint как изменчивый.

http://msdn.microsoft. com / en-us / library / x13ttww7 (VS.71) .aspx

-15
ответ дан 1 December 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: