Обновить
0
0

Пользователь

Отправить сообщение

Транзакционная память: история и развитие

Время на прочтение14 мин
Охват и читатели49K

Определение


Параллельное программирование сложно. При использовании систем с общей памятью не обойтись без синхронизации доступа параллельных процессов/потоков к общему ресурсу (памяти). Для этого используются:
  • блокировки (mutex);
  • алгоритмы без блокировки (lockless, lock-free);
  • транзакционная память.


Транзакционная память — технология синхронизации конкурентных потоков. Она упрощает параллельное программирование, выделяя группы инструкций в атомарные транзакции. Конкурентные потоки работают параллельно1, пока не начинают модифицировать один и тот же участок памяти. К примеру, операции добавления узлов в красно-чёрное дерево (анимация в заголовке) способны работать параллельно в нескольких потоках.
Скрытый текст
/* Move item from one list to another */
int move(list *from, list *to) {
    __transaction_atomic {
        node *n = pop(from);
        push(to, n);
    }
}

Читать дальше →

Уроки, извлеченные из похороненного проекта

Время на прочтение5 мин
Охват и читатели16K
Данный текст создан на основе моего выступления на GRWebDev. Это история проекта, который был отменен и похоронен в GitHub, а также рассказ об уроках, извлеченных в ходе работы над ним.

Читать дальше →

Бесплатная книга «Game Programming Patterns» от программиста Electronic Arts Боба Найстрома

Время на прочтение1 мин
Охват и читатели86K
Боб Найстром, программист, проработавший восемь лет в компании Electronic Arts, закончил работу над книгой «Game Programming Patterns». Она доступна бесплатно на сайте gameprogrammingpatterns.com. Писать книгу Боб Найстром начал четыре года назад. Большинство книг, посвящённых программированию игр, говорит он во введении, либо подробно раскрывают какой-то из аспектов создания игры — физический движок, графику, искусственный интеллект, либо описывают процесс создания игры в определённом жанре от начала до конца. Ему очень не хватало книги, рассказывающей о решении типовых задач, возникающих перед программистом, книги достаточно универсальной, не привязанной к жанрам или конкретным подсистемам игр. И поэтому он решил написать такую книгу сам.
Читать дальше →

Потоки — это Goto параллельного программирования

Время на прочтение6 мин
Охват и читатели39K
Сразу раскрою мысль, вынесенную в заголовок. Использование потоков (также именуемых нити, треды, англ. threads) и средств прямой манипуляции ими (создание, уничтожение, синхронизация) для написания параллельных приложений оказывает столь же пагубное влияние на сложность алгоритмов, качество кода и скорость его отладки, какое вносило использование оператора Goto в последовательных программах.
Как когда-то программисты отказались от неструктурированных переходов, нам необходимо отказаться от прямого использования потоков сейчас и в будущем. И так же, как каждый из нас использует структурные блоки вместо Goto, вместо потоков должны использоваться структуры, построенные поверх них. Благо, все инструменты для этого появились во вполне традиционных языках.
Автор фото: Rainer Zenz
Читать дальше →

12 малоизвестных возможностей CSS

Время на прочтение8 мин
Охват и читатели138K
CSS — не очень сложный язык. Но даже если вы пишете таблицы стилей в течении многих лет, наверняка бывают моменты, когда вы узнаете еще что-нибудь новенькое: свойства или значения, которые вам не доводилось использовать, детали спецификации, о которых вы не имели понятия.

В процессе работы с CSS я постоянно нахожу что-нибудь интересненькое, так что решил написать пост и поделиться своими знаниями с вами. Правда, учитывайте, что не всё, о чем будет рассказано, имеет непосредственное практическое значение, но, на всякий случай, в хозяйстве пригодится.
Читать дальше →

Unreal Engine 4 теперь доступен для всех

Время на прочтение1 мин
Охват и читатели102K
Компания Epic Games анонсировала что с сегодняшнего дня любой желающий может получить доступ к Unreal Engine 4 всего за 19$ в месяц + 5% от стоимости каждой проданной копии продукта, сделанного на основе UE4.
Читать дальше →

Гибридные диски SSHD — что за птица?

Время на прочтение2 мин
Охват и читатели435K


В нашей работе частенько приходится иметь дело с разнообразными накопителями информации, включая винчестеры и твердотельные накопители информации. При этом иногда попадаются и достаточно необычные устройства, которые не распространены повсеместно. К примеру, SSHD — гибридные винчестеры. Вероятно, на Хабре есть люди, которые хорошо знакомы с этим типом накопителей информации, но есть и те, кто даже не слышал о подобных «гибридах».

Поэтому мы решили опубликовать статью о подобных винчестерах, описав их устройство, а также преимущества, по сравнению с привычными жесткими дисками и SSD.

Читать дальше →

Введение в оптимизацию. Имитация отжига

Время на прочтение10 мин
Охват и читатели200K
В этой статье я постараюсь максимально доходчиво рассказать о таком простом, но эффективном методе оптимизации, как имитация отжига (simulated annealing). А чтобы не быть причисленным к далёким от практики любителям теоретизировать, я покажу как применить этот метод для решения задачи коммивояжёра.

Для понимания статьи Вам понадобятся минимальные навыки программирования и владение математикой на уровне 9 класса средней школы. Статья рассчитана на людей не знакомых с методами оптимизации или только делающих первые шаги в этом направлении.

image


Читать дальше →

Python: вещи, которых вы могли не знать

Время на прочтение8 мин
Охват и читатели316K
Python — красивый и местами загадочный язык. И даже зная его весьма неплохо, рано или поздно находишь для себя нечто такое, что раньше не использовал. Этот пост отражает некоторые детали языка, на которые многие не обращают внимание. Сразу скажу: многие примеры являются непрактичными, но, оттого, не менее интересными. Так же, многие примеры демонстрируют unpythonic стиль, но я и не претендую на новые стандарты — я просто хочу показать, что можно делать вот так.
Читать далее

NASA выложила в открытый доступ 17000 фотографий программы «Аполлон»

Время на прочтение1 мин
Охват и читатели120K


Судя по всему, у сторонников конспирологических теорий о рептилоидах фальшивых полетах человека на Луну в ближайшие годы появится очень много работы :) Дело в том, что NASA выложило в открытый доступ целых 17000 фотографий, сделанных в рамках программы «Аполлон» — всего цикла. В числе выложенных фото есть и очень известные снимки, и те, которые многие из нас увидят впервые.

Читать дальше →

RCE в Android-приложениях через сторонние сервисы

Время на прочтение3 мин
Охват и читатели7.3K
Совсем недавно компания MWR опубликовала интересную запись "WebView addJavascriptInterface Remote Code Execution" в своем блоге. Запись касается безопасности мобильных приложений. Не хочется полностью пересказывать исследование наших английских коллег — советуем обратиться к первоисточнику. Но если коротко, то при использовании сторонней библиотеки в своем мобильном приложении под Android можно легко поймать RCE (remote code execution) атаку. Произвольное выполнение кода в Android-приложении возможно благодаря рефлексии Java-объекта, который вставляется в WebView.

Читать дальше →

Lock-free структуры данных. Основы: Атомарность и атомарные примитивы

Время на прочтение15 мин
Охват и читатели116K

Построение lock-free структур данных зиждется на двух китах – атомарных операциях и способах упорядочения доступа к памяти. В этой статье речь пойдет об атомарности и атомарных примитивах.

Анонс. Спасибо за теплый прием Начал! Вижу, что тема lock-free интересна хабрасообществу, это меня радует. Я планировал построить цикл по академическому принципу, плавно переходя от основ к алгоритмам, попутно иллюстрируя текст кодом из libcds. Но часть читателей требует зрелищ не мешкая показать, как пользоваться библиотекой, особо не рассусоливая. Я согласен, в этом есть свой резон. В конечном счете, и мне не так интересно, что там внутри boost, — опишите, как его применять! Поэтому свой эпический цикл я разделю на три части: Основы, Внутри и Извне. Каждая статья эпопеи будет относится к одной из частей. В Основах будет рассказываться о низкоуровневых вещах, вплоть до строения современных процессоров; это часть для почемучек вроде меня. Внутри будет освещать интересные алгоритмы и подходы в мире lock-free, — это скорее теория о том, как реализовать lock-free структуру данных, libcds будет неисчерпаемым источником C++ кода. В Извне будут статьи о практике применения libcds, — программные решения, советы и FAQ. Извне будет питаться вашими вопросами/замечаниями/предложениями, дорогие хабражители.

А пока я судорожно готовлю начало Извне, — первая часть Основ. Статья во многом не о C++ (хотя и о нем тоже) и даже не о lock-free (хотя без atomic lock-free алгоритмы неработоспособны), а о реализации атомарных примитивов в современных процессорах и о базовых проблемах, возникающих при использовании таких примитивов.
Атомарность — это первый круг ада низкий уровень из двух.
Читать дальше →

Lock-free структуры данных. Извне: введение в libcds

Время на прочтение14 мин
Охват и читатели32K

В этой статье я даю краткий обзор того, как применять библиотеку lock-free структур данных libcds. В реализацию я углубляться здесь не буду, — это просто взгляд извне, взгляд со стороны пользователя библиотеки.

Библиотека libcds имеет свою точку зрения на многие известные структуры данных. Отчасти это объясняется целевой областью – lock-free структуры данных довольно минималистичны по набору предоставляемых методов, — отчасти желанием выйти за ограничения и решения стандартной библиотеки STL. Что из этого получилось – решать пользователям libcds.

Кому интересно – добро пожаловать под кат
Читать дальше →

Lock-free структуры данных. Внутри. Схемы управления памятью

Время на прочтение28 мин
Охват и читатели56K

Как я упоминал в своих предыдущих заметках, основными трудностями при реализации lock-free структур данных являются ABA-проблема и удаление памяти. Я разделяю эти две проблемы, хоть они и связаны: дело в том, что существуют алгоритмы, решающие только одну из них.
В этой статье я дам обзор известных мне методов безопасного удаления памяти (safe memory reclamation) для lock-free контейнеров. Демонстрировать применение того или иного метода я буду на классической lock-free очереди Майкла-Скотта [MS98].

Читать дальше →

Первые шаги с OpenCL или сказ о том как одинаковый код на GPU и CPU запускать

Время на прочтение15 мин
Охват и читатели60K
Итак, прошел почти год с момента моего первого поста о программировании видеокарт и страшилок о том, как это все сложно. Теперь настала пора показать, что все не так плохо и как пользоваться этой странной штукой по имени OpenCL, да еще и использовать его главное преимущество, то есть возможность запускать один и тот же код на разных девайсах. А еще я покажу как можно получить на порядок большую производительность обычного процессора практически бесплатно.
За деталями под кат...

CFD 3D: простой симулятор воды

Время на прочтение12 мин
Охват и читатели67K




Введение


CFD (Computational fluid dynamics) — вычислительная гидродинамика.
Используется для моделирования разных процессов в жидкостях, а также разных типов жидкостей (например мёд, нефть — это все жидкости).

В данном посте рассматривается 2D симулятор обычной воды с открытой поверхностью и препятствиями (для 3D версии все аналогично + доступны исходники).
Поверхность воды представляет собой границу, отделяющую воду от воздуха.Это позволяет моделировать волны, падение капель и т.д.
Читать дальше →

Привычный вид для Visual Studio 2012

Время на прочтение1 мин
Охват и читатели78K

Не нравятся новые цветовые темы


Ставим Visual Studio 2012 Color Theme Editor, видим в меню VS новый пункт «THEME», наслаждаемся.

Не нравятся новые иконки в Solution Explorer


Ставим Visual Studio Icon Patcher (VS 2010 должна быть тоже установлена).

Не нравится CAPS в меню


Об этом уже писали.

Спасибо Скотту Хансельману за то, что пишет полезные вещи в свой блог.

Джефф Дин из компании Google — это Чак Норрис нашего времени

Время на прочтение4 мин
Охват и читатели230K
«Джефф Дин компилирует и запускает свой код перед коммитом, но только чтобы проверить на баги компилятор и CPU», — вот один из множества шуточных фактов о Джеффе Дине.

Джефф Дин считается кем-то вроде Чака Норриса. Отличие только в том, что он вовсе не герой боевиков, а инженер-программист компании Google.

Шутки о нём впервые появились на 1 апреля шесть лет назад. Один из коллег Дина по имени Кентон Варда открыл страничку, куда каждый мог добавлять факты о Джеффе Дине. Идею с энтузиазмом подхватили другие разработчики — и вскоре наполнили страничку множеством таких «фактов».
Читать дальше →

Уязвимость позволяющая слышать собеседника с выключенным микрофоном

Время на прочтение1 мин
Охват и читатели13K
image

Уязвимость позволяет активировать выключенный микрофон собеседника без его ведома. При этом пиктограмма микрофона останется перечеркнутой.

Ошибка находится в функции автоматического восстановления связи при обрыве в режиме группового звонка. Проверено на Windows-версиях 5.5.0.124, 5.6, BETA 5.7.0.123.

Шаги чтобы воспроизвести ошибку:
  1. Звоним или принимаем звонок.
  2. Собеседник мьютит микрофон.
  3. Превращаем звонок в групповой, введя в чат /add echo123
  4. Отключаем интернет и ждем красного сообщения «Hold on while we try to get the call back».
  5. Подключаем интернет и ждем когда звонок восстановится.
  6. Слышим собеседника, несмотря на то, что у него пиктограмма микрофона выглядит перечеркнутой


При звонках тет-а-тет ошибку воспроизвести не удалось.

Тикет jira.skype.com/browse/SCW-3328

UPD: Разработчики подтвердили ошибку.

Raul Liive

We have confirmed and we are working on fixing it as soon as possible

Issue id: calling-244

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность