Для тех, кто ездит на "гоночных" велосипедах, бордюры проблемой не являются. Начиная от того, что они ездят преимущественно по дорогам, где бордюров нет, заканчивая тем, что они умеют прыгать через бордюры.
На сноуборде скорость контролируется длиной/крутизной дуги, хочется побыстрее - дуги короче/параллельнее склону, хочется помедленнее - можно ехать во всю ширину склона, если надо остановиться - можно даже заложить дугу вверх по склону. Соскабливание - ну так новички ездят, да.
На красно-черных выскобленных спусках кантоваться гораздо безопаснее (хотя это и кажется сложнее и опаснее, так как скорость выше; но это как раз и дает контроль над доской), чем соскабливаться на канте.
П...ц. Не могу отделаться от мысли, что правительство выпустило директиву о том, что все население садится на швабру в субботу утром, а айтишники заняты тем, что прикручивают электронную очередь к госуслугам, чтобы каждый приходил к назначенному времени и не толпился. И айтишники могли прийти вечером вместо утра, потому что там посвободней.
Я не совсем понимаю, что вы хотите доказать. В программировании в 99,(9)% случаев использование volatile в контексте многопоточности - это ошибка и непонимание, как оно работает.
Очевидно есть специальные случаи, когда это все нужно.
-funroll-loops Unroll loops whose number of iterations can be determined at compile time or upon entry to the loop. -funroll-loops implies -frerun-cse-after-loop. It also turns on complete loop peeling (i.e. complete removal of loops with small constant number of iterations). This option makes code larger, and may or may not make it run faster. -funroll-all-loops Unroll all loops, even if their number of iterations is uncertain when the loop is entered. This usually makes programs run more slowly. -funroll-all-loops implies the same options as -funroll-loops.
volatile uint16_t* reg = 0x1234567;
*reg = 1;
while (*reg == 1) {
// do something
}
Без volatile компилятор просто заменит условие на `while (true)`, потому что значение было присвоено в 1, и проверяется 1. При объявлении переменной как volatile компилятор не будет делать никаких оптимизаций при обращении к переменной, и всегда будет честно читать ее значение. Как уже отмечалось в комментариях, это используется в программировании контроллеров/..., когда значение по адресу может меняться внешним образом.
Слова не мальчика, но мужа!
Чтобы уехавшие ИТ-специалисты вернулись, нужно всего лишь... Но правильный вывод сделать почему-то очень сложно.
Для этого лучше использовать SQLite
Для тех, кто ездит на "гоночных" велосипедах, бордюры проблемой не являются. Начиная от того, что они ездят преимущественно по дорогам, где бордюров нет, заканчивая тем, что они умеют прыгать через бордюры.
Но ведь в таком случае абьюзер тоже будет иметь возможность узнать, что жертва заходила на этот сайт?
Ну можно еще попробовать кастомный user-level tcp stack какой-нибудь :) И общение через shared memory.
Вы так говорите, как будто хром - это что-то хорошее...
Проблема только может быть в том, что экс-фаанг специалисты могут быть специалистами только в проходжении фаанг-собесов.
Так вот оно что!
На сноуборде скорость контролируется длиной/крутизной дуги, хочется побыстрее - дуги короче/параллельнее склону, хочется помедленнее - можно ехать во всю ширину склона, если надо остановиться - можно даже заложить дугу вверх по склону.
Соскабливание - ну так новички ездят, да.
На красно-черных выскобленных спусках кантоваться гораздо безопаснее (хотя это и кажется сложнее и опаснее, так как скорость выше; но это как раз и дает контроль над доской), чем соскабливаться на канте.
П...ц. Не могу отделаться от мысли, что правительство выпустило директиву о том, что все население садится на швабру в субботу утром, а айтишники заняты тем, что прикручивают электронную очередь к госуслугам, чтобы каждый приходил к назначенному времени и не толпился. И айтишники могли прийти вечером вместо утра, потому что там посвободней.
Газпромбанк теперь не IT-банк, будет ли пресс-релиз?
https://habr.com/ru/company/gazprombank/news/t/675146/
Я не совсем понимаю, что вы хотите доказать. В программировании в 99,(9)% случаев использование
volatile
в контексте многопоточности - это ошибка и непонимание, как оно работает.Очевидно есть специальные случаи, когда это все нужно.
Казалось бы, а причем тут C, на котором написан DPDK, и его работа с регистрами?
Буква S в аббревиатуре IoT означает "security".
https://gcc.gnu.org/onlinedocs/gcc-3.4.4/gcc/Optimize-Options.html
-funroll-loops
Unroll loops whose number of iterations can be determined at compile time or upon entry to the loop. -funroll-loops implies -frerun-cse-after-loop. It also turns on complete loop peeling (i.e. complete removal of loops with small constant number of iterations). This option makes code larger, and may or may not make it run faster.
-funroll-all-loops
Unroll all loops, even if their number of iterations is uncertain when the loop is entered. This usually makes programs run more slowly. -funroll-all-loops implies the same options as -funroll-loops.
Через православные std::atomic<>?
Пример использования
volatile
:Без
volatile
компилятор просто заменит условие на `while (true)`, потому что значение было присвоено в 1, и проверяется 1. При объявлении переменной какvolatile
компилятор не будет делать никаких оптимизаций при обращении к переменной, и всегда будет честно читать ее значение.Как уже отмечалось в комментариях, это используется в программировании контроллеров/..., когда значение по адресу может меняться внешним образом.
Никогда, слышите, никогда не используйте
volatile
в одном предложении сmultithreading
. Единственное исключение: предыдущее предложение.https://stackoverflow.com/questions/4557979/when-to-use-volatile-with-multi-threading
Пример из статьи, где переменная объявляется
volatile
и якобы из-за этого можно мониторить, что она изменяется в другом потоке - абсолютно неверен.