четверг, 9 августа 2012 г.

Современные подходы к параллельной разработке

В разработке современных приложений параллельное программирование играет наиважнейшую роль не только на стороне серверного, но и на стороне клиентского ПО. Писать многопоточные приложения могут многие, многозадачные - единицы. Лекция посвящена обзору основных техник и шаблонов параллельной разработки, применяемых в промышленном программировании, и немного облегчающих рядовому программисту задачу написания эффективных многозадачных приложений.
Именно этой теме была посвящена моя очередная лекция на летней школе Parallels. И хотя она составлена по мотивам более ранних заметок из этого блога, возможно кому-нибудь подобная комиляция материала может показаться весьма поленой.

вторник, 3 июля 2012 г.

Особенности управления крупной инфраструктурой. Начало

При разработке контрольной панели управляющей крупной сетевой инфраструктурой и автоматизирующей такие рутинные сценарии, как: создание организационных единиц в Active Directory или подготовка почтовых ящиков пользователям, приходится сталкиваться с множеством оптимизационных задач. В новом цикле, открываемом этой заметкой, я расскажу об одном решении, применяемом нами в Parallels Automation, позволяющем справиться сразу с несколькими проблемами подобного рода.

среда, 18 апреля 2012 г.

Асинхронно в WinAPI. Продолжение

Нет ничего сложного в том, чтобы отправить потоку асинхронное сообщение длинной в пару байт. Гораздо интереснее проделать этот же трюк с неограниченным объёмом информации. Итак, цели прежние: организовать асинхронное взаимодействие между потоками с минимальным количеством блокировок. Лишь немного изменились условия: теперь сообщение – это строка произвольной длинны.

понедельник, 19 марта 2012 г.

Асинхронно в WinAPI. Начало

Различные средства параллельного программирования от библиотек вроде Concurrency Runtime до специализированных языков вроде Erlang предоставляют такую типовую операцию, как отправка асинхронного сообщения потоку. А каким образом можно реализовать эту возможность, опираясь только функционал WinAPI. Попробуем разобраться.

среда, 18 января 2012 г.

MapReduce и Erlang – лучше когда вместе

Пришла пора добавить немного кода к рассказанной в прошлый раз теории. Вот только идея написать MapReduce на C++ или C# мне показалась слишком банальной и тривиальной. Захотелось немного экзотики. Если уж реализовывать "супер распределённый" алгоритм, то только на языке, который считается одним из наиболее приспособленных к параллельным вычислениям. Я говорю об Erlang`е.

понедельник, 12 декабря 2011 г.

Кратко о MapReduce

Среди всех параллельных алгоритмов, реализации которых легко масштабируются на произвольное количество ядер, MapReduce можно назвать одним из самым свежих. Компания Google представила его в 2004 году. Давайте попробуем разобраться: что это такое и зачем оно нужно.

понедельник, 14 ноября 2011 г.

Параллельный зоопарк

Рассказывая про методы многопоточного программирования в предыдущих заметках, я регулярно обращался за помощью к библиотеке Concurrency Runtime. Эта прекрасная библиотека имеет 2 недостатка: во-первых, она доступна только в составе Microsoft Visual Studio 2010 и выше; во-вторых, она работает только в ОС Windows начиная с версии XP с 3-им сервис-паком. В данной заметке я хочу рассмотреть некоторые альтернативные библиотеки, для многопоточного программирования, лишённые таких ограничений.