Дедлоки — распространенная проблема в многопоточном программировании. В больших приложениях вручную отслеживать порядок блокировок может быть достаточно сложно, причем эта проблема может не всплыть на этапе тестирования и случиться только в каких-то сложновоспроизводимых кейсах при реальном использовании. Существует много способов их избегания, но здесь мы рассмотрим только один — автоматическое выявление дедлоков на основе графа ожидания.
Рубрика «threading»
Многопоточный Python на примерах: избавляемся от дедлоков
2022-06-16 в 8:15, admin, рубрики: deadlocks, dfs, graph, python, python3, threading, wfg, Блог компании Ozon Tech, параллельное программирование, ПрограммированиеМногопоточный Python на примерах: как правильно хранить настройки приложения
2021-11-18 в 8:04, admin, рубрики: python, python3, threading, Блог компании ДомКлик, параллельное программированиеЕсли опустить первое и самое главное предубеждение относительно питонячьей многопоточности у большинства программистов — что её не существует из-за GILЧитать полностью »
Как эффективнее читать данные с диска (при условии, что у вас .Net)
2017-06-27 в 7:12, admin, рубрики: .net, async, asyncawait, await, comparison, hdd, io bound, io operation, microsoft .net, performance comparison, ssd, task, thread, threading, windows, Блог компании Технологический Центр Дойче Банка, Программирование, разработка под windows, сценарии, Тестирование IT-систем, чтение данных, чтение данных с диска
Привет!
Некоторое время назад меня заинтересовал вопрос: как эффективнее всего читать данные с диска (при условии, что у вас .Net)? Задача чтения кучи файлов встречается во множестве программ, которые при самом старте начинают вычитывать конфигурации, некоторые самостоятельно подгружают модули и т.д.
В интернете я не нашел подобных сравнений (если не считать тюнинга под определенные конфигурации).
Читать полностью »
Чистим лук (но не плачем): методики оптимизации
2016-05-24 в 9:51, admin, рубрики: Code for Good, fortran, openmp, optimization, parallel computing, threading, Блог компании Intel, ПрограммированиеЭта статья представляет собой формализованный ответ на публикацию на форуме IDZ. Проблема, которую описывал автор исходной публикации, заключалась в том, что производительность работы кода не увеличивалась в достаточной степени при использовании OpenMP на 8-ядерном процессоре E5-2650 V2 с 16 аппаратными потоками. Потребовалось некоторое время на форуме, чтобы помочь автору публикации и предоставить ему необходимые подсказки, однако времени для оптимизации кода было недостаточно. В этой статье описываются дальнейшие методики оптимизации в дополнение к описанным на форуме IDZ.
Потокобезопасные сигналы, которыми действительно удобно пользоваться
2016-03-22 в 8:06, admin, рубрики: c++, signals, threading, потоки, Программирование В мире существует множество библиотек, реализующих сигналы в C++. К сожалению, у всех реализаций, с которыми я сталкивался, есть несколько проблем, которые не позволяют писать простой многопоточный код с использованием этих библиотек. Здесь я расскажу об этих проблемах, и о том, как их можно решить.
Читать полностью »
Сегодняшняя статья вдохновила меня поделиться своим способом вынесения баз данных в отдельный тред. Способ подходит не только для БД, но и для любых взаимодействий, описываемых паттерном «в отдельном потоке живёт какой-то объект, надо у него что-то спрашивать и что-то с ним делать». Кроме того, способ хорош тем, что он пытается быть типобезопасным и расширяемым: никаких stringly-typed QMetaObject::invokeMethod()
, никаких передач результатов дёрганья объекта в потоке через сигналы. Только прямой вызов функций, только QFuture
!
Читать полностью »
Web-разработка на Python глазами PHP-программиста
2014-11-23 в 13:23, admin, рубрики: fastcgi, php, python, threading, uwsgi, web-application, wsgi, Веб-разработкаВведение
В статье хотелось бы поднять вопросы отличия использования Python для web-зазработки по сравнению с оной на PHP. Надеюсь, статья не приведет к холиварам, так как она вовсе не о том, какой язык лучше или хуже, а исключительно о технических особенностях Python.
Читать полностью »
Function Pointer — забытая реализация шаблона Singleton
2014-06-30 в 8:09, admin, рубрики: design patterns, java, singleton, threading, Совершенный код, метки: design patterns, java, singleton, threadingМного статей написано о том, как правильно реализовывать на Java шаблон проектирования Singleton.
Как правило, специалисты ломают копья вокруг проблемы, как совместить корректную работу в условиях многопоточного использования и эффективное выполнение, обеспечивающее производительность, близкую максимальной.
Лично я считаю единственным корректным способом реализации синглтона на Java так называемый Synchronized Accessor:
public class Singleton {
private static Singleton instance;
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
Именно так задумывали реализацию подобной задачи авторы виртуальной машины Java, именно такая реализация используется в стандартной библиотеке классов языка Java. Если же для программы метод доступа к синглтону становится узким местом, то это повод для того, чтобы произвести редизайн программы, чтобы она обращалась к глобальному объекту не так часто.
Однако, пытаясь освежить в памяти возможности Java concurrency, я почитал старые статьи о вариантах синглтонов и удивился, что не нахожу описания еще одного способа, который я называю Function Pointer.
Читать полностью »
Многопоточная закачка файла в S3
2012-03-29 в 22:02, admin, рубрики: amazon s3, ruby, threading, upload, метки: amazon s3, ruby, threading, upload Эта статья иллюстрирует реальное применение и получение выигрыша в производительности на примере закачки файлов в хранилище Amazon S3 с использованием многопоточности на языке Ruby с использованием gem aws-sdk.
Читать полностью »