Найти в Дзене
8 лет назад
 • Вы подписаны

Реализация "легкого" spinlock на атомарных операциях

Решил я тут разобраться с атомарными командами, что это такое, какими они бывают и что делают. В целом если объяснять на пальцах, то атомарные или неделимые операции, как следуют из названия, неделимые. Т.е. команда либо еще не выполнена, либо уже выполнена, мы не сможем застать эту операцию в середине процесса. Естественно это реализуется за счет аппаратной поддержке. И у разных архитектур эти команды могут и отличаются, но что бы с вами не зарывались в спецификациях разработчики компиляторов унифицировали работу с этими операциями, описание всех команд можно найти в документации к компилятору(например gcc)...

8 лет назад
 • Вы подписаны

Немного о линковки статических библиотек

Базовые понятия, кратко Совершенно неожиданное открытие сделал недавно. Оказывается порядок появления файлов на входе линковщика важен, если мы говорим о линковки статических библиотек. Для того что бы понять почему так происходит, нужно понимать принцип работы линковщика. Объектные файлы как предоставляют(экспортируют) символы(имена функций, переменных), так и ожидают(импортируют) их. Рассмотрим небольшой пример: int imported(int); static int internal(int x) { return x * 2; } int exported(int x) { return imported(x) * internal(x); } Теперь скомпилируем этот файл: gcc -c test.c nm test.o 000000000000000e...

8 лет назад
 • Вы подписаны

libuv - библиотека для асинхронного I/O

Процессе изучения Javascript и Node я как системный программист не мог не поинтересоваться его внутренним устройством. Одной из интересных находок стала библиотека libuv. libuv libuv - кроссплатформенная библиотека асинхронного ввода-вывода(I/O), разрабатываемая для Node.JS. Библиотека "навязывает" асинхронный, событийно-ориентированный стиль программирования(Node же). Эта библиотека как и libevent2 использует наиболее эффективный из доступных в системе способов асинхронной работы с сокетами(epoll, kqueue,...

Покупайте СтеллыИ дарите их за контент