У Go есть некоторые замечательные свойства, которым посвящён раздел «Хороший». Но когда речь заходит о применении этого языка не для создания API или сетевых серверов (для чего он и был разработан), а для реализации бизнес-логики, то я считаю Gо слишком неуклюжим и неудобным. Хотя даже в рамках сетевого программирования найдётся немало подводных камней как в архитектуре языка, так и в реализации, что делает Go опасным, несмотря на его кажущуюся простоту.
Рубрика «параллельное программирование» - 11
Go: Хороший, плохой, злой
2018-04-20 в 6:32, admin, рубрики: Go, golang, Анализ и проектирование систем, Блог компании Mail.Ru Group, никто не читает теги, параллельное программирование, ПрограммированиеРуководство по фоновой работе в Android. Часть 4: RxJava
2018-04-19 в 12:58, admin, рубрики: android, rxjava, Блог компании EPAM, Блог компании JUG.ru Group, параллельное программирование, Разработка под android
Обработка событий — это цикл.
В прошлой части мы говорили об использовании thread pool executors для фоновой работы в Android. Проблема этого подхода оказалась в том, что отправляющий события знает, как должен быть обработан результат. Посмотрим теперь, что предлагает RxJava.
Дисклеймер: это не статья о том, как использовать RxJava в Android. Таких текстов в интернете и так прорва. Этот — о деталях реализации библиотеки.
Читать полностью »
Разбор основных концепций параллелизма
2018-04-12 в 17:43, admin, рубрики: java, parallelism, Блог компании Отус, параллельное программирование, ПрограммированиеВсем кофе!
Завтра у нас плавненько стартует практически юбилейный поток курс «Разработчик Java» — уже шестой по счёту начиная с апреля прошлого года. А это значит, что мы снова подобрали, перевели интереснейший материал, которым делимся с вами.
Поехали!
Эта памятка поможет Java-разработчикам, работающим с многопоточными программами, понять основные концепции параллелизма и способы их применения. Вы ознакомьтесь с ключевыми аспектами языка Java со ссылками на стандартную библиотеку.
РАЗДЕЛ 1
Вступление
С момента своего создания Java поддерживает ключевые концепции параллелизма, такие как потоки и блокировки. Эта памятка поможет Java-разработчикам, работающим с многопоточными программами, понять основные концепции параллелизма и способы их применения.
РАЗДЕЛ 2
Концепции
Концепция | Описание |
---|---|
Atomicity (атомарность) | Атомарная операция — это операция, которая выполняется полностью или не выполняется совсем, частичное выполнение невозможно. |
Visibility (видимость) | Условия, при которых один поток видит изменения, сделанные другим потоком |
Таблица 1: Концепции параллелизма
Достижимость нижней границы времени исполнения коммита распределенных отказоустойчивых транзакций
2018-04-11 в 6:36, admin, рубрики: big data, raft, Алгоритмы, Анализ и проектирование систем, высокая производительность, консенсус, параллельное программирование, распределенные системы, транзакцииПредисловие
Недавно прочитал очередную статью из серии: "мы лучше двухфазного коммита". Здесь я не буду анализировать содержания этой статьи (хотя, подумываю о том, чтобы дать развернутый анализ). Задача моего опуса — предложить самый эффективный вариант распределенного коммита с точки зрения временных задержек. Конечно, такой коммит дается высокой ценой. Однако цель — дать оценку и показать, что двухфазный коммит не является тормозным, как многие считают.
Стоит также отметить, что здесь не будет натурных экспериментов и фейковых сравнений. Будут просто даны алгоритмы и теоретический анализ. При желании, можно самостоятельно реализовать и проверить на практике. Конечно, было бы куда лучше, чтобы это было описано в текущей статье, но все упирается в свободное время и мотивацию. На мой взгляд, описать алгоритмы более важно, чем привести графики, т.к. графики по алгоритмам может нарисовать почти каждый, обратное же не верно.
Многопоточность на корабликах
2018-03-29 в 16:01, admin, рубрики: java, multithreading, многопоточное программирование, многопоточность, многопоточность на java, параллельное программирование, пример многопоточного приложение, что такое многопоточность
Задача производитель/потребитель
Статья рассчитана для новичков, которые недавно начали свое знакомство с миром многопоточноcти на JAVA.
Читать полностью »
Software Transactional Memory на Free-монадах
2018-03-27 в 12:53, admin, рубрики: free-монады, haskell, monads, stm, параллельное программирование, функциональное программированиеОсознав, что я давно не писал на Хабр ничего полезного о ФП и Haskell, и что имеется вполне отличный повод для технической статьи, — решил тряхнуть стариной. Речь в статье пойдет о Software Trasactional Memory (STM), которую мне удалось реализовать на Free-монадах при участии ADTs и MVars. И, в общем-то, Proof of Concept оказался крайне простым, в сравнении с «настоящим» STM. Давайте это обсудим.
Software Transactional Memory
Изучаем параллельные вычисления с OpenMPI и суперкомпьютером на примере взлома соседского WiFi
2018-03-13 в 18:42, admin, рубрики: Aircrack-ng, c++, HPC, openmpi, wpa2, параллельное программирование, системное программированиеВо время написания диссертации одним из направлением исследований было распараллеливание поиска в пространстве состояний на вычислительных кластерах. У меня был доступ к вычислительному кластеру, но не было практики в программировании для кластеров (или HPC — High Performance Computing). Поэтому прежде чем переходить к боевой задаче, я хотел поупражняться на чем-то простом. Но я не любитель абстрактных hello world без реальных практических задач, поэтому такая задача быстро нашлась.
Всем известно, что полный перебор является самым низкоэффективным способом подбора паролей. Однако с появлением суперкомпьютеров появилась возможность существенно ускорить данный процесс, поскольку, как правило, перебор параллелится практически без накладных расходов. Поэтому, теоретически, на кластере можно ускорить процесс с линейным коэффициентом, т.е. имея 100 ядер — ускорить процесс в 1000*k раз (где 0.0 < k <= 1.0). Так ли это на практике?
Эффективное использование памяти при параллельных операциях ввода-вывода в Python
2018-03-13 в 16:14, admin, рубрики: asynchronous, asyncio, multithreading, parallel processing, python, параллельное программированиеСуществует два класса задач где нам может потребоваться параллельная обработка: операции ввода-вывода и задачи активно использующие ЦП, такие как обработка изображений. Python позволяет реализовать несколько подходов к параллельной обработке данных. Рассмотрим их применительно к операциям ввода-вывода.
До версии Python 3.5 было два способа реализации параллельной обработки операций ввода-вывода. Нативный метод — использование многопоточности, другой вариант — библиотеки типа Gevent, которые распараллеливают задачи в виде микро-потоков. Python 3.5 предоставил встроенную поддержку параллелизма с помощью asyncio. Мне было любопытно посмотреть, как каждый из них будет работать с точки зрения памяти. Результаты ниже.
Читать полностью »
Java и Project Reactor
2018-03-13 в 7:56, admin, рубрики: async, flow, flux, funcorp, ifunny, java, Mono, netty, nio, open source, Reactive Streams, reactor, spring, WebFlux, Блог компании FunCorp, параллельное программирование, ПрограммированиеВсем привет! Меня зовут Лёха, и я работаю бэкенд-разработчиком в FunCorp. Сегодня мы поговорим про реактивное программирование, библиотеку Reactor и немного про веб.
Реактивное программирование часто «подвергается упоминанию», но если вы (как и автор статьи) всё ещё не знаете, что это такое — устраивайтесь поудобнее, попробуем разобраться вместе.
Задача про forEach(ps::println) от СКБ Контур
2018-03-10 в 11:47, admin, рубрики: java, java 8, performance, stream api, наш ответ чемберлену!, параллельное программирование, параллельные вычисления, ПрограммированиеНа конференции JBreak я не читал задачки спонсоров специально. Ну, конечно, кроме ада от Excelsior: уж эти ребята всем задали жару. А тут принесли мне листок от СКБ Контур, смотри, мол, посмейся. Я посмеялся: первая задача действительно выглядела настолько наивно сформированной и недоопределённой, что даже не хотелось идти к стенду и убеждать в этом сотрудников компании. Я про это почти забыл, однако тут на Хабре появился авторский разбор этой задачи, не лишённый некоторой глубины. Даже про modCount
написали. Выходит, зря я смеялся?