Как только я заинтересовался lock-free алгоритмами, меня стал мучить вопрос – а откуда взялась необходимость в барьерах памяти, в «наведении порядка» в коде?
Конечно, прочитав несколько тысяч страниц руководств по конкретной архитектуре, мы найдем ответ. Но этот ответ будет годен для этой конкретной архитектуры. Есть ли общий? В конце концов, мы же хотим, чтобы наш код был портабелен. Да и модель памяти C++11 не заточена под конкретный процессор.
Наиболее приемлемый общий ответ дал мне мистер Paul McKenney в своей статье 2010 года Memory Barriers: a Hardware View of Software Hackers. Ценность его статьи – в общности: он построил некоторую упрощенную абстрактную архитектуру, на примере которой и разбирает, что такое барьер памяти и зачем он был введен.
Вообще, Paul McKenney – известная личность. Он является разработчиком и активным пропагандистом технологии RCU, которая активно используется в ядре Linux, а также реализована в последней версии libcds в качестве ещё одного подхода к безопасному освобождению памяти (вообще, о RCU я хотел бы рассказать отдельно). Также принимал участие в работе над моделью памяти C++11.
Статья большая, я даю перевод только первой половины. Я позволил себе добавить некоторые комментарии, [которые выделены в тексте так].
Читать полностью »
Рубрика «Блог компании i-Free» - 3
Lock-free структуры данных. Основы: Атомарность и атомарные примитивы
2013-10-08 в 6:00, admin, рубрики: atomic, c++, lock-free, Блог компании i-Free, Программирование, метки: atomic, lock-free
Построение lock-free структур данных зиждется на двух китах – атомарных операциях и способах упорядочения доступа к памяти. В этой статье речь пойдет об атомарности и атомарных примитивах.
Анонс. Спасибо за теплый прием Начал! Вижу, что тема lock-free интересна хабрасообществу, это меня радует. Я планировал построить цикл по академическому принципу, плавно переходя от основ к алгоритмам, попутно иллюстрируя текст кодом из libcds. Но часть читателей требует зрелищ не мешкая показать, как пользоваться библиотекой, особо не рассусоливая. Я согласен, в этом есть свой резон. В конечном счете, и мне не так интересно, что там внутри boost, — опишите, как его применять! Поэтому свой эпический цикл я разделю на три части: Основы, Внутри и Извне. Каждая статья эпопеи будет относится к одной из частей. В Основах будет рассказываться о низкоуровневых вещах, вплоть до строения современных процессоров; это часть для почемучек вроде меня. Внутри будет освещать интересные алгоритмы и подходы в мире lock-free, — это скорее теория о том, как реализовать lock-free структуру данных, libcds будет неисчерпаемым источником C++ кода. В Извне будут статьи о практике применения libcds, — программные решения, советы и FAQ. Извне будет питаться вашими вопросами/замечаниями/предложениями, дорогие читатели.
А пока я судорожно готовлю начало Извне, — первая часть Основ. Статья во многом не о C++ (хотя и о нем тоже) и даже не о lock-free (хотя без atomic lock-free алгоритмы неработоспособны), а о реализации атомарных примитивов в современных процессорах и о базовых проблемах, возникающих при использовании таких примитивов.
Атомарность — это первый круг ада низкий уровень из двух.
Читать полностью »
Lock-free структуры данных. 1 — Начало
2013-10-01 в 6:11, admin, рубрики: c++, lock-free, Блог компании i-Free, Программирование, метки: lock-free
Я надеюсь, что эта статья станет началом цикла заметок о lock-free структурах данных. Я хочу поделиться с читателим своим опытом, наблюдениям и размышлениями о том, что такое lock-free структуры данных, как их реализовывать, подходят ли концепции контейнеров стандартной библиотеки STL к lock-free контейнерам, и когда стоит (и стоит ли вообще) применять lock-free структуры данных.
HTC One: тестирование NFC-платежей
2013-09-25 в 13:40, admin, рубрики: HTC One, i-free, mastercard paypass, NFC, TSM, банковские карты, бесконтактные платежи, Беспроводные технологии, Блог компании i-Free, метки: HTC One, i-free, mastercard paypass, NFC, TSM, банковские карты, бесконтактные платежиПро NFC на Хабре сказано уже не мало, но это либо теоретические аспекты, либо примеры контактной персонализации. Сегодня я хочу затронуть тему удаленного выпуска карточных продуктов и функций платформы TSM. Вернее, разберем мы этот вопрос в следующих постах, а для начала предлагаю попробовать NFC-платежи на практике.
Все что для этого нужно, — это совместимый смартфон и специальный софт, который сможет реализовать аппаратные возможности NFC. Так как HTC One будет одним из первых смартфонов на рынке России, на котором станет доступно приложение NFC Кошелек (или просто «Кошелек»), то и коснется данный пост в первую очередь владельцев этой модели. «Кошелек», если кратко, это примерно то же самое, что и Google Wallet, только разработан он в России, и «карточки» в него можно будет загружать в первую очередь от российских поставщиков услуг (я имею в виду банки, метро, гор.транспорт, купоны, скидки и пр.).
Совсем скоро первая версия «Кошелька» — продукта, над которым мы работаем в компании i-Free, — станет частью прошивки официально поставляемых в Россию HTC One, и перед этим мы хотим убедиться, насколько это возможно, что все ОК. Поэтому я хочу попросить вас, как наиболее активную аудиторию владельцев этого смартфона, подключиться ко второй фазе бета-теста и наконец-то попробовать воспользоваться вашими One-ами как полноценными банковскими картами.
Читать полностью »