![](https://habrastorage.org/files/817/b38/f79/817b38f7937a41259c48998f2cb990a0.png)
Можно ли такой подход распространить на lock-free list?.. Посмотрим…
C++ Developer
std::map
поддерживает ещё одну очень полезную абстракцию — итераторы. Возможно ли реализовать итерабельный lock-free map?Зачем гуманитарию знать Стандартную модель квантовой теории поля? Затем, что это научная база, которая важнее, чем таблица умножения или периодическая таблица Менделеева. Она является самой успешной, проверенной и перепроверенной физической теорией, дающей предсказания с невероятной точностью. В таблице Стандартной модели всего 17 элементов, из которых для нашей жизни имеют значение не более десяти. Мы сами и всё, что нас окружает, состоит из трёх фермионов первого поколения – верхнего и нижнего кварков и электрона, а все физические процессы сводятся к четырём фундаментальным взаимодействиям, переносимым фотоном, глюонами и тяжёлыми калибровочными бозонами. Ну и конечно знаменитый бозон Хиггса – без него у нас бы не было массы. С непривычки названия и функции этих частиц запомнить трудно, но если постараться – задача вполне посильная без необходимости получать техническое образование. Наградой за ваш умственный труд будет исчерпывающее понимание глубинной сути вещей и стойкий иммунитет к разного рода псевдонаучным мифам.
O(N)
, где N
— число элементов в списке, так что наш алгоритм lock-free ordered list сам по себе представляет небольшой интерес при больших N
.Пару лет назад я написал статью про получение имен элементов enum в моих любимых плюсах без использования typeid, макросов и черной магии, а то и вообще в компайлтайм. Хотя нет, немного магии там все же было. Это был интересный опыт, но особого применения в проде я так и не нашел, хотя коллеги начали активно использовать эту возможность чтобы итерироваться по enum в поисках нужного элемента по его строковому представлению. Оно конечно задумывалось наоборот, но как говорится, пасту в тюбик обратно не запихнешь, пользуются и то радость. И тут в домашнем игровом движке мне понадобился похожий функционал получения имени структуры или класса в компайлтайм, можно конечно было сделать через typeid, но в релизной сборке rtti планируется отключать, так что этот вариант не подходит. А конвертировать имя структуры в строку все же хочется. При чем тут Гарри и для чего это все нужно в конце статьи.
В одной из предыдущих статей я рассказал о математических алгоритмах, позволяющих проверить простоту очень большого числа. Но в основе всех тех алгоритмов лежит одна базовая операция — перемножение двух больших чисел. Именно операции длинного умножения занимают 99,9% времени выполнения любого теста простоты. Как же умножение реализуется на практике? Говорят, что при помощи быстрого преобразования Фурье. Но беглое прочтение Википедии вызывает недоумение. Какое отношение преобразование Фурье имеет к умножению целых чисел? Давайте разбираться.
У меня хорошая новость для тех, кому надоело читать мои нудные лонгриды по квантовой теории и философии физики. В этой статье будет одна практика – квантовые эксперименты в домашних условиях, с минимальным бюджетом и без специального оборудования. Я решил снять и наглядно продемонстрировать, как построить квантовый компьютер своими руками и выполнить на нём квантовое вычисление - алгоритм Дойча. Всё, что я буду делать, вы сможете при желании воспроизвести у себя дома и убедиться, что это работает. Если у вас есть знакомые, которые сомневаются в квантовой механике и отрицают факт квантового превосходства, поделитесь с ними ссылкой на эту статью или видео, пусть посмотрят.
Лупхолы — это техника, позволяющая манипулировать глобальным состоянием компилятора, добавляя значения и считывая их.
Эта техника позволяет решать многие задачи, некоторые из которых будут рассмотрены в статье:
Узнать, какие параметры принимает конструктор типа.
Узнать, с какими шаблонными параметрами вызывался метод/функция с ADL.
Как сделать метапрограммирование с типами более похожим на обычный код, где есть состояние.