Алгоритм такой — «идти вслед за рынком». Когда начинаются массовые распродажи, программа тоже начинает работать в этом направлении («если акции падают, лучше сейчас продать, пока цена не упала ещё больше»).
1) "__gc" — это старый синтаксис, его уже давно не рекомендуется использовать.
2) Есть такой проект SWIG, сильно помогает, когда есть связи C#, Java, python ...-> C++
ManualResetEventSlim при невозможности захватить ресурс просто некоторое (короткое) время продолжает делать это в цикле. Если и тогда не получается — тогда нить засыпает и ждёт, когда её разбудит ядро.
Поведение, аналогичное функциям InitializeCriticalSection и InitializeCriticalSectionAndSpinCount из WinAPI.
Выгода тут в том, что вход/выход в режим ядра — это очень долгая (в сравнении с этим небольшим циклом) операция.
«The sizeof operator yields the size (in bytes) », всё верно, но тут тонкость в том, что этот самый «byte» определяется в пункте 1.7 Стандарта, и там нигде нет ограничения на размер этого byte'а сверху.
На той платформе, где sizeof(int)==1, этот самый byte — 32-битная величина. Меньше процессор просто не умеет.
Особенно интересно на этой платформе выглядели работа со строками и чтение файлов.
У assert'ов есть несколько проблем в дизайне: во-первых, они выполняют проверки только в Debug-режиме (молчаливо подразумевая, что в Release проверок делать не надо), во-вторых, стандартное поведение assert'ов — это вызов функции abort(), которая остановит приложение. Это редко где бывает допустимо.
DNSSEC: генерация главного ключа
Ну что ж так фатально-то.
К примеру, сколько багов содержит «Hello, World!» на любимом языке программирования?
Система с положительной обратной связью.
2) Есть такой проект SWIG, сильно помогает, когда есть связи C#, Java, python ...-> C++
Пункт 2.4 Branchless min/max
Т.е. можно сделать за 0 сравнений. Это трюк в чистом виде, программировать так надо очень-очень редко, но для общего развития знать надо.
Результатом может являться всё, что угодно. Жёсткий диск, например, отформатировать. Или занести мусор в значения x и y.
Иногда результатом undefined behavior является тот результат, которого ожидает программист — «правильные» значения в переменных.
Почему не работает — это про sequence points читать надо.
Поведение, аналогичное функциям InitializeCriticalSection и InitializeCriticalSectionAndSpinCount из WinAPI.
Выгода тут в том, что вход/выход в режим ядра — это очень долгая (в сравнении с этим небольшим циклом) операция.
www.ti.com/litv/pdf/spru034h — платформа TMS320C3x/C4x, таблица 3-1
Все типы (кроме long double) — 32-бита.
Там же, прямым текстом: «A TMS320C3x/C4x Byte Is 32 Bits»
Таблица 1-13, «Data Type and Data Type Sizes». Размер всех типов (за исключением long double) — 32 bits, возвращаемое sizeof значение — 1.
У TI должно быть что-то похожее, но я что-то сейчас не смог найти.
На той платформе, где sizeof(int)==1, этот самый byte — 32-битная величина. Меньше процессор просто не умеет.
Особенно интересно на этой платформе выглядели работа со строками и чтение файлов.
Но как рассказать про #pragma pack, не рассказав перед этим, что такое вообще выравнивание и на что именно оно влияет?
Но: в релизе на вход функции могут подать не отсортированный массив? Если да — функция, получается, вернёт мусор?
Темплейты и функторы помогают компилятору гораздо эффективней делать оптимизацию. Классический пример — qsort() в plain С vs std::sort() из С++