Как стать автором
Обновить

Intel обещает, что чипы 12-го поколения получат до 70% больше производительности

Высокая производительность *Компьютерное железо Процессоры

После презентации чипов для ноутбуков 12-го поколения серии H на выставке CES Intel опубликовала больше деталей о своих новых процессорах серий U и P для ультрапортативных компьютеров. Похоже, что компания стремится обеспечить большой прирост производительности при сокращении потребления энергии.

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Просмотры 2K
Комментарии 1

Эмуляция многопоточности в PHP

PHP *
Суть многопоточности (для приложения) состоит в том, что процесс может состоять из нескольких (однотипных) потоков, выполняющихся «параллельно», то есть без упорядочивания по времени — выполнился один, пошел следующий. Использование многопоточности позволяет ускорить выполнение задачи и/или снизить нагрузку, таким образом, улучшая быстродействие самого приложения.

PHP относится к языкам, в которых поддержка многопоточности отсутствует. Но, есть немало задач, в которых она была бы очень полезна. Как правило, это задачи, в которых одно действие нужно выполнить много раз, но с различными параметрами, причем само действие настолько ресурсоемко, а количество итераций настолько велико, что обычный цикл использовать невозможно.

Я рассмотрю простой пример, как можно достичь эмуляции многопоточности в PHP.
Читать дальше →
Всего голосов 54: ↑40 и ↓14 +26
Просмотры 29K
Комментарии 76

Попытка реализации многопоточности в PHP

Чулан
Задача была в след: Нужно было получить координаты для множества городов и регионов.
Т.к. координат было куча возникло решение в многопоточности.

Плюсы: одновременное выполнение нескольких запросов к серверу.
Минусы: если запускать свой скрипт, то надо указывать url к скрипту, т.е. на локале не всегда будет работать.
Читать дальше →
Всего голосов 11: ↑5 и ↓6 -1
Просмотры 294
Комментарии 23

Практика использования пространства System.Threading при написании многопоточных приложений в .NET.

.NET *
Последнее время приходится писать «маленькие» серверы для многопоточной обработки относительно небольших объемов данных. Хочу поделится с хабрасообществом определенным приемом в написании таких приложений.
Читать дальше →
Всего голосов 10: ↑7 и ↓3 +4
Просмотры 4.9K
Комментарии 18

.Net: Затраты на многопоточность

Чулан
Недавно получил простую задачу: написать windows-сервис для обработки пользовательских запросов. Вопрос про то, какие эти запросы и по какому протоколу работает сервис, выходит за рамки этой статьи. Более интересным мне показался другой фактор, многопоточную ли делать обработку запросов. С одной стороны — последовательное выполнение тормозит процес обработки информации. С другой стороны могут быть не оправданы затраты на создание и запуск потока.
Итак, исходные данные: 20 простейших запросов в секунду (1200 запросов в минуту) в пиковое время. Тестовый «сервер»: Celeron, 3ГЦ, 1Гб (свободно 70%).
Потестируем
Всего голосов 22: ↑16 и ↓6 +10
Просмотры 688
Комментарии 18

Firefox и распараллеливание на процессы

Firefox
Разработчики всеми любимого браузера всерьёз занялись возможностью обработки страниц и контента сразу несколькими процессами, это должно позволить решить сразу несколько проблем, цитата:

* Стабильность: в случае, если подключаемый модуль или элемент страницы попытается полностью занять процессор или память машины или вызовет критическую ошибку, процесс изолирует эти события от всего остального;
* Производительность: деление задач на несколько процессов позволит использовать преимущества многоядерных процессоров, устанавливаемых на большинство современных настольных и переносных устройств, а также повысит «отзывчивость» интерфейса во время продолжительных операций по обработке страниц;
* Безопасность: выполняя работу в процессах с пониженными правами, обозреватель изолирует активное содержимое сайтов от системы пользователя.

План разработки можно посмотреть в вики

Также доступен демонстрационный ролик на котором видны некоторые достижения команды Mozilla на данном этапе разработки.

Обсудить данную разработку можно на канале #content на сервере irc.mozilla.org
Всего голосов 37: ↑26 и ↓11 +15
Просмотры 1K
Комментарии 57

Об F# для архитекторов

.NET *
Перевод
Данная статья выросла из доклада, сделанного Крисом Смитом, одним из разработчиков F# на конференции DevLink. В целом она носит обзорный характер, однако несмотря на это, и на то, что усилиями shwars, mezastel и отчасти вашего покорного слуги F# уже не раз мелькал на Хабре, думаю что этот язык программирования не стал еще настолько очевиден всем, чтобы эта статья полностью потеряла смысл. Более того, здесь Крис пытается ответить на главный вопрос, который, думаю, мучает всех, кто хоть раз слышал о F#. Где же все-таки его применять? Получилось у него или нет – вам судить. Надеюсь после прочтения у вас хоть что-то относительно всего этого прояснится. Если так, я буду считать свою миссию перевыполненной :)
P.S. Первый перевод, поэтому не обессудьте за некоторые возможные баги.
image
Читать дальше
Всего голосов 66: ↑52 и ↓14 +38
Просмотры 8K
Комментарии 33

Многопоточность, общие данные и мьютексы

C++ *

Введение


При написании многопоточных приложений почти всегда требуется работать с общими данными, одновременное изменение которых может привести к очень неприятным последствиям.

Для блокировки общих данных от одновременного доступа необходимо использовать объекты синхронизации.

В данном топике рассмотренна методика работы с мютексами, существенно уменьшающая количество потенциальных ошибок связанных с созданием/удалением и захватом/освобождением.

Неудаление мютекса приводит к утечке памяти, незахват — к некорректным данным, а неосвобождение — к блокировке всех функций, работающих с общими данными.

Ниже рассматривается работа с мютексами в Windows и Unix, подобная идея может быть использована при работе с другими объектами синхронизации.

Эта идея является частным случаем методики «Выделение ресурса — есть инициализация (RAII)».

Далее
Всего голосов 50: ↑38 и ↓12 +26
Просмотры 56K
Комментарии 50

Почти настоящая многопоточность средствами php 5

PHP *
В очередной раз читал про многопоточность в php точнее полное её отсутствие и всевозможные костыли в виде не блокируемых сокетов. Вот как раз там наткнулся на интересную статью в которой описывался очень простой и эффективный способ распараллеливания потоков. На основе этого материала написал небольшой класс что бы облегчить себе работу в будущем.
Читать дальше →
Всего голосов 73: ↑52 и ↓21 +31
Просмотры 32K
Комментарии 59

Тестирование мультипоточности в Symbian

Qt *
Недавно мы ставили SDK для разработки под Qt for Symbian на Linux. Теперь пришло время что-нибудь написать на нем.
Сейчас практически везде используются многопоточные архитектуры для выполнения каких-либо фоновых расчетов в то время как пользователь использует UI.
Давайте разберемся, насколько это эффективно при разработке под Symbian.
А давайте!
Всего голосов 31: ↑28 и ↓3 +25
Просмотры 766
Комментарии 42

Одноврéменно || Одновремéнно

PHP *
Перевод
image

Введение


ZendX_Console_Process_Unix позволяет разработчикам создавать объекты под видом процессов, и таким образом параллельно выполнять несколько задач. Из-за особенностей реализации на текущий момент эта возможность доступна только на *nix системах, таких как Linux, Solaris, Mac / OSX и другие в CLI или CGI режиме. Кроме того для работы этого компонента необходимы следующие модули: Shared Memory, Process Control и POSIX. Если одно из требований не выполняется, то будет брошено исключение.

Основы использования ZendX_Console_Process_Unix


ZendX_Console_Process_Unix это абстрактный класс, который должен быть расширен пользователем. В нем находится единственный абстрактный метод _run(), который должен описывать реализуемый алгоритм обработки тех или иных данных. Так же в классе определенны методы для проверки состояния процесса и обмена переменными между основным и дочерними процессами.

Метод _run(), а так же каждый метод вызванный внутри него будет выполняться в отдельном процессе. Любой другой метод, вызванный в вашем приложении будет выполняться в родительском процессе.

Методы setVariable () и getVariable () могут быть использованы для передачи переменных между родительским и дочерними процессами. Для наблюдения за статусом дочернего процесса следует вызывать внутри него метод _setAlive () через короткие промежутки времени, таким образом родительский процесс сможет получить информацию о состоянии дочернего процесса посредством вызова метода getLastAlive (). Чтобы получить PID дочернего процесса, родитель может вызвать getPid().
Читать дальше →
Всего голосов 42: ↑37 и ↓5 +32
Просмотры 807
Комментарии 34

Многопоточность в Ruby

Ruby *
Перевод
Перевод главы «Multithreading» книги David Thomas и Andrew Hunt «Programming Ruby: The Pragmatic Programmers' Guide, Second Edition».

Часто самым простым способом выполнить одновременно две вещи является использование потоков в Ruby. Они являются внутрипроцессными, встроенными в интерпретатор Ruby. Это делает потоки Ruby полностью переносимыми, т.е. независимыми от операционной системы. Но в то же время вы точно не получите выгоду от использования родных, нативных потоков. Что это значит?

Вы можете столкнуться с голоданием (thread starvation — это когда поток с маленьким приоритетом не имеет шанса запуститься). Если вы хотите заблокировать ваши потоки, то со скрежетом остановится целый процесс. А если возникнет ситуация, что некоторые потоки будут посылать вызовы операционной системе, для выполнения которых требуется немалое время, то все потоки будут висеть, пока интерпретатор не получит контроль обратно. И наконец, если ваша машина имеет больше одного процессора, потоки Ruby не будут это использовать, т.к. они запускаются в одном процессе, а в одиночном родном потоке они будут вынуждены запускаться на одном процессоре единовременно.

Все это звучит страшновато. Тем не менее, на практике во многих случаях выгода от использования потоков во многом перевешивает любые потенциальные проблемы, которые могут возникнуть. Потоки Ruby являются эффективным и легким путем достижения параллельности в вашем коде. Вы просто должны понять основные проблемы реализации, и, соответственно, архитектуру.
Читать дальше →
Всего голосов 41: ↑37 и ↓4 +33
Просмотры 35K
Комментарии 30

Flash-игра «Мафия» в условиях «В контакте»

Разработка игр *
Цель этой статьи — описание процесса создания приложения, на примере моей игры «Мафия» под «В контакте».
Тем, кто не знает (хотя лично я что-то очень сомневаюсь, что найдутся такие) что это за игра, рекомендую почитать ее описание на Википедии.

Если вы знаете, что такое As3, Flex, Java, многопоточность, постоянное сокетное соединение или вам просто интересно как пишутся flash-игры, то думаю пост для вас!
Под катом также найдется немного статистики.

Читать дальше →
Всего голосов 71: ↑38 и ↓33 +5
Просмотры 6.8K
Комментарии 36

Руководство по отладке многопоточных приложений в Visual Studio 2010

Visual Studio *
В этой статье я расскажу, как отлаживать многопоточные приложения в Visual Studio 2010, используя окна Parallel Tasks и Parallel Stacks. Эти окна помогут понять структуру выполнения многопоточных приложений и проверить правильность работы кода, который использует Task Parallel Library.

Мы научимся:
  • Как смотреть call stacks выполняемых потоков
  • Как посмотреть список заданий созданных в нашем приложении (System.Threading.Tasks.Task)
  • Как перемещаться в окнах отладки Parallel Tasks и Parallel Stacks
  • Узнаем интересные и полезные мелочи в отладки с vs2010


Осторожно, много картинок
Читать дальше →
Всего голосов 63: ↑47 и ↓16 +31
Просмотры 17K
Комментарии 9

Многопоточность — как средство повышения эффективности

Разработка под Android *
Перевод
Хорошей практикой в создании быстро реагирующего приложения является уверенность, что ваш пользовательский интерфейс требует минимального времени для обработки. Каждое потенциально долгое действие, которое может повесить Ваше приложение, нужно вывести в отдельный поток. Типичными примерами таких действий являются сетевые операции, которые несут в себе непредсказуемые задержки. Пользователи могут мириться с небольшими паузами, особенно, если вы информируете их о прогрессе, а вот застывшее на месте приложение не дает им выбора, кроме как закрыть его.

В этом уроке мы создадим загрузчик картинок, который иллюстрирует данную ситуацию. Мы будем заполнять ListView пиктограммами изображений, загруженных из сети. Созданный асинхронный процесс, загружающий изображения в фоновом режиме, будет ускорять наше приложение.
Читать дальше →
Всего голосов 44: ↑39 и ↓5 +34
Просмотры 4.9K
Комментарии 19

5 вещей, которых вы не знали о многопоточности

Java *
Перевод
Хоть от многопоточности и библиотек, которые её поддерживают, отказываются немногие Java-программисты, но тех, кто нашёл время изучить вопрос в глубину ещё меньше. Вместо этого мы узнаём о потоках только столько, сколько нам требуется для конкретной задачи, добавляя новые приёмы в свой инструментарий лишь тогда, когда это необходимо. Так можно создавать и запускать достойные приложения, но можно делать и лучше. Понимание особенностей компилятора и виртуальной машины Java поможет вам писать более эффективный, производительный код.

В этом выпуске серии «5 вещей …», я представлю некоторые из тонких аспектов многопоточного программирования, в том числе synchronized-методы, volatile переменные и атомарные классы. Речь пойдет в особенности о том, как некоторые из этих конструкций взаимодействуют с JVM и Java-компилятором, и как различные взаимодействия могут повлиять на производительность приложений.
Читать дальше →
Всего голосов 86: ↑77 и ↓9 +68
Просмотры 277K
Комментарии 40

Многопоточные классы

C++ *
Из песочницы
Доброго времени суток. Хочу поведать уважаемому хабрачитателю одну интересную вещь с которой пришлось столкнуться в недавнем времени. В одной из задач, стоявших передо мной, требовалось реализовать класс. В рамках этого класса должны выполняться некоторые вычисления. Для простоты, а также в целях сохранения работоспособности основного кода, решено было использовать потоки. Но все оказалось не так тривиально.
Читать дальше →
Всего голосов 22: ↑13 и ↓9 +4
Просмотры 18K
Комментарии 37

Пишем свой обработчик тасков на .NET

.NET *
Из песочницы
Всем привет.
В вашей компании не любят open-source?
Вы любите велосипеды?
Всегда было интересно, как устроены планировщики задач?
Под катом история о том, как мне пришлось сделать свой аналог известного open source планировщика quartz.net.
Читать дальше
Всего голосов 19: ↑12 и ↓7 +5
Просмотры 16K
Комментарии 8

Расширяем log4net. Конкурентное логирование

.NET *
Библиотека log4net известна и в представлении не нуждается. В ней есть практически всё, что нужно, «из коробки». Однако, есть специфические ситуации, в которых необходимо добавлять/расширять функциональность библиотеки. Конкретная ситуация: есть некоторая библиотека, которая выполняет логирование через log4net в некоторый логер (или несколько — не суть). Эта библиотека используется в N службах. Как сделать так, чтобы логирование происходило в единственный файл? Под катом объяснение, почему FileAppender+MinimalLock не подходит, и реализация Appender'а, который решает задачу. Отдельно хочу сказать, что вопрос о логировании в БД, по сети и т.п. в статье не рассматривается, т.к. это гораздо более серьёзная задача, которая (особенно для больших систем) требует длительного обдумывания и внедрения.

Читать дальше →
Всего голосов 39: ↑31 и ↓8 +23
Просмотры 12K
Комментарии 16

Многопоточное приложение под Tornado

Серверная оптимизация *


В документации к неблокирующему вебсерверу Торнадо красиво расписано как здорово он справляется с нагрузкой, и вообще является венцом творения человечества в области неблокирующих серверов. Отчасти это верно. Но при построении сложных приложений за рамками «еще одного чата» выявляется много неочевидных и тонких моментов, о которых желательно знать до вояжа по граблям. Под «катом» разработчики клуба интелектуальных игр Трельяж готовы поделиться своими мыслями о подводных камнях.
Читать дальше →
Всего голосов 70: ↑65.5 и ↓4.5 +61
Просмотры 38K
Комментарии 28