Рубрика «multithreading» - 2
Корутины и синхронизация. Лучше не смешивать
2020-11-19 в 9:39, admin, рубрики: concurrency, coroutines, funcorp, kotlin, multithreading, Mutex, synchronized, syncronize, Блог компании FunCorp, ПрограммированиеПредположим, у вас в коде есть критическая секция, которая не должна выполняться более, чем одним потоком одновременно.
В мире Java одним из стандартных решений является добавление ключевого слова synchronized к сигнатуре метода. В Kotlin для получения того же эффекта используется аннотация @Synchronized
Читать полностью » Не давайте имена потокам из ThreadPool при отладке в VS
2020-03-29 в 20:52, admin, рубрики: c++, debug, multithreading, threadpool, vs, отладка, разработка под windowsВ некотором 2017 году, во время отладки в VS, производительность в проекте падала на ~80%, превращая игру в сборник различных ассинхронных кадров. Виновником торжества стала функция SetThreadName внутри пула. Читать полностью »
Deadlock Empire — игра для разработчиков
2020-02-14 в 8:15, admin, рубрики: .net, avanpost, C#, concurrency, multithreading, Mutex, parallel programming, semaphore, Блог компании Avanpost, Игры и игровые приставки, многопоточность, Программирование
Хабр, как известно, не место для игр, но мы нашли одно исключение, которое, как нам кажется, достойно упоминания здесь!
Встречайте: Deadlock Empire!
Суть игры — управление планировкой потоков, код которых приведен в заданиях. Управлять нужно так, чтобы добиться ошибочной ситуации: взаимблокировки, повторных значений счетчиков, достижения определенных участков кода и прочих непредвиденных ситуаций, которые нужно осознавать при разработке многопоточных приложений.
Читать полностью »
Умный сервис кэша на базе ZeroMQ и Tarantool
2019-11-12 в 13:15, admin, рубрики: docker, java, multithreading, nosql, tarantool, zeromq, Блог компании Московский кредитный банк, микросервисы, Разработка под LinuxРуслан Ароматов, главный разработчик, МКБ

Привет! Я работаю бэкенд-разработчиком в Московском кредитном банке, и за время работы у меня накопился некоторый опыт, которым я хотел бы поделиться с сообществом. Сегодня я расскажу, как мы писали свой собственный сервис кэша для фронт-серверов наших клиентов, использующих мобильное приложение «МКБ Онлайн». Статья может быть полезна тем, кто занимается проектированием сервисов и знаком с микросервисной архитектурой, in-memory базой данных Tarantool и библиотекой ZeroMQ. В статье практически не будет примеров кода и объяснения основ, а только описание логики работы сервисов и их взаимодействия на конкретном примере, работающем у нас на бою уже более двух лет.
Читать полностью »
Тестирование многопоточного и асинхронного кода
2019-10-19 в 10:13, admin, рубрики: asynchronous, debug, java, multithreading, testing, translationПривет!
На неделе встала задача написать интеграционный тест для Spring Boot приложения, использующего асинхронное взаимодействие с внешними системами.
Освежил много материала про отладку многопоточного кода.
Привлекла внимание статья «Testing Multi-Threaded and Asynchronous Code» by Jonathan Halterman, мой перевод которой приведен ниже.
Читать полностью »
Технология Progressive Streaming, или как смотреть 4k видео по сети, без фризов
2019-06-13 в 7:49, admin, рубрики: 4k, high performance, multithreading, progressive streaming, Алгоритмы, будущее здесь, высокая производительность, параллельное программирование
Сегодня никого не удивить скоростью интернета 100 Мбитс., но существует проблема, как её использовать. Все основные операции загружают сеть не полностью. Одновременно с этим более высокую популярность получают тяжёлые форматы аудио и видео 4k-8k, которые хочется смотреть онлайн. И глядя на высокие скорости интернета, возникает логичный вопрос — а почему этого нет? Как освоить всю скорость предоставляемую провайдером? Как со стороны клиента, так и со стороны сервиса. Рассмотрим все эти вопросы в статье.
Читать полностью »
.NET: Инструменты для работы с многопоточностью и асинхронностью. Часть 1
2019-05-23 в 8:22, admin, рубрики: .net, ASP, async/await, asynchronous, C#, multithreading, parallelism, tpl, асинхронность, многопоточность, системное администрированиеПубликую на Хабр оригинал статьи, перевод которой размещен в корпоративном блоге.
Необходимость делать что-то асинхронно, не дожидаясь результат здесь и сейчас, или разделять большую работу между несколькими выполняющими ее единицами была и до появления компьютеров. С их появлением такая необходимость стала очень ощутимой. Сейчас, в 2019, набирая эту статью на ноутбуке с 8 ядерным процессором Intel Core, на котором параллельно этому работает не одна сотня процессов, а потоков и того больше. Рядом, лежит уже немного потрепанный, купленный пару лет назад телефон, у него на борту 8 ядерный процессор. На тематических ресурсах полно статей и видео, где их авторы восхищаются флагманскими смартфонами этого года куда ставят 16ти-ядерные процессоры. MS Azure предоставляет менее чем за 20$/час виртуальную машину со 128 ядерным процессором и 2 TB RAM. К сожалению невозможно извлечь максимум и обуздать эту мощь не умея управлять взаимодействием потоков.
Читать полностью »
«Современные» обедающие философы на C++ посредством акторов и CSP
2019-01-30 в 12:56, admin, рубрики: actor model, actors, c++, C++14, concurrency, multithreading, open source, sobjectizer, ПрограммированиеНекоторое время назад ссылка на статью "Modern dining philosophers" распространилась по ресурсам вроде Reddit и HackerNews. Статья интересная, она показывает несколько решений этой известной задачи, реализованных на современном C++ с использованием task-based подхода. Если кто-то это статью еще не читал, то имеет смысл потратить время и прочесть ее.
Однако, не могу сказать, что представленные в статье решения мне показались простыми и понятными. Вероятно это как раз из-за использования тасков. Слишком уж их много создается и диспетчируется посредством разнообразных диспетчеров/сериализаторов. Так что не всегда понятно, где, когда и какие задачи выполняются.
При этом task-based подход не является единственным возможным для решения подобных задач. Почему бы не посмотреть, как задача "обедающих философов" решается посредством моделей Акторов и CSP?
Посему попробовал посмотреть и реализовал несколько решений этой задачи как с использованием Акторов, так и с использованием CSP. Код этих решений можно найти в репозитории на BitBucket-е. А под катом пояснения и объяснения, так что кому интересно, милости прошу под кат.
Как писать unit-тесты для акторов? Подход SObjectizer-а
2019-01-10 в 9:22, admin, рубрики: actor model, actors, c++, c++11, concurrency, multithreading, open source, sobjectizer, ПрограммированиеАкторы упрощают многопоточное программирование за счет ухода от общего разделяемого изменяемого состояния. Каждый актор владеет собственными данными, которые никому не видны. Взаимодействуют акторы только посредством асинхронных сообщений. Поэтому самые кошмарные ужасы многопоточности в виде гонок и дедлоков при использовании акторов не страшны (хотя у акторов есть свои заморочки, но сейчас не об этом).
В общем, писать многопоточные приложения с использованием акторов легко и приятно. В том числе и потому, что сами акторы пишутся легко и непринужденно. Можно даже сказать, что написание кода актора — это самая простая часть работы. Но вот когда актор написан, то возникает очень хороший вопрос: «Как проверить правильность его работы?»
Вопрос, действительно, очень хороший. Нам его регулярно задают когда мы рассказываем про акторов вообще и про SObjectizer в частности. И до недавнего времени мы могли отвечать на этот вопрос лишь общими словами.
Но вот вышла версия 5.5.24, в которой появилась экспериментальная поддержка возможности unit-тестирования акторов. И в данной статье мы попытаемся рассказать о том, что это, как этим пользоваться и с помощью чего это было реализовано.
Читать полностью »
