Pull to refresh

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

High performance *Computer hardware CPU

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

Читать далее
Total votes 5: ↑5 and ↓0 +5
Views 2.2K
Comments 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обсудить данную разработку можно на канале #content на сервере irc.mozilla.org
Total votes 37: ↑26 and ↓11 +15
Views 1.1K
Comments 57

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

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

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

C++ *

Введение


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

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

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

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

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

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

Далее
Total votes 50: ↑38 and ↓12 +26
Views 57K
Comments 50

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

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

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

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

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

PHP *
Translation
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().
Читать дальше →
Total votes 42: ↑37 and ↓5 +32
Views 836
Comments 34

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

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

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

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

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

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

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

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

Читать дальше →
Total votes 71: ↑38 and ↓33 +5
Views 6.9K
Comments 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


Осторожно, много картинок
Читать дальше →
Total votes 63: ↑47 and ↓16 +31
Views 18K
Comments 9

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

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

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

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

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

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

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

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

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

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

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

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

Читать дальше →
Total votes 39: ↑31 and ↓8 +23
Views 12K
Comments 16

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

Server optimization *


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