26.08.2008
32 подводных камня OpenMP при программировании на C++
|
|
С распространением многоядерных систем задача параллельного программирования становится все более и более актуальной. Данная область, однако, является новой даже для большинства опытных программистов.
Существующие компиляторы и анализаторы кода позволяют находить некоторые ошибки, возникающие при разработке параллельного кода. Многие ошибки никак не диагностируются. В данной статье приводится описание ряда ошибок, приводящих к некорректному поведению параллельных программ, созданных на основе технологии OpenMP. |
05.02.2011
Асинхронное программирование в C# 5
|
|
В статье рассматриваются новые возможности асинхронного программирования доступные в новой версии языка программирования C#. |
06.08.2004
Методика разработки многопоточных приложений: принципы и практическая реализация
|
|
Современные операционные системы (OC) нацелены на наиболее эффективное использование ресурсов компьютера. По большей части эффективность достигается за счет разделения ресурсов компьютера между несколькими процессами (многозадачность). Такое крупномасштабное разделение ресурсов обеспечивается операционными системами без каких-либо действий со стороны приложений или процессов. Процессы могут выполняться одновременно за счет переключения центрального процессора (или нескольких процессоров) между ними. Последние версии OC предоставляют механизмы, позволяющие приложениям управлять ресурсами компьютера и распределять их с большей степенью детализации, т.е. на уровне потоков. По аналогии с многозадачными операционными системами, которые могут одновременно выполнять несколько задач путем запуска нескольких процессов, процесс может в свою очередь выполнять несколько задач за счет использования нескольких потоков. В данном документе обсуждаются способы применения потоков для повышения производительности приложений. Также здесь представлена методика распараллеливания последовательных приложений. |
14.03.2005
Критические секции
|
|
В статье рассматриваются аспекты работы с критическими секциями, их внутреннее устройство и способы отладки |
27.03.2004
Спин-блокировки
|
|
<span class='lineQuote'>K>"Для использования спин-блокировки в критической секции нужно инициализи ровать счетчик циклов, вызвав: </span><br />
<span class='lineQuote'><br />
K>BOOL InitalizeCriticalSectionAndSpinCount( PCRITICAL_SECTION pcs, DWORD dwSpinCount); </span><br />
<span class='lineQuote'><br />
K>Как и в InitializeCriticalSection, первый параметр этой функции — адрес структуры критической се...</span> |
14.02.2002
Заметка о производительности многопоточных Win32-программ
|
|
Довольно давно я прочитал статью, автор которой объединил две концепции - многозадачность и объектно-ориентированное программирование. В результате получились так называемые "живые объекты". Идея крайне проста - при инициализации объекта создается отдельный поток и объект в нем живет своей жизнью, а создатель объекта по мере необходимости получает информацию о состоянии объекта из его свойств. |
15.02.2001
Многозадачность в Windows
|
|
Сейчас игнорировать возможности многозадачности, которые предоставляет Windows,
не может себе позволить ни один уважающий себя программист.
Многозадачность - это вовсе не так сложно, как кажется на первый взгляд,
и эта статья призвана вас в этом убедить. В ней рассматриваются основные концепции организации
многозадачной среды - процессы и потоки, а также подробно описывается проблема синхронизации
потоков и ее решение. |
08.08.2004
Поток и функция-член класса
|
|
ethan hunt wrote:<br />
<span class='lineQuote'><br />
> Господа,</span><br />
<span class='lineQuote'>> извиняюсь за тупость, но почему в отдельный поток можно кидать только статическую функцию-член класса. До конца не понимаю (может из-за недосыпания).</span><br />
<br />
Потому, что статическая функция-член имеет такой же тип, как и обычная ф-ция (в отличее от нестатической фун-ции... |
03.08.2003
Эффективная многопоточность
|
|
Статья посвящена системным механизмам, организующим (или помогающим организовать) пул потоков. Рассматриваются базовые, универсальные сервисы, с помощью которых можно реализовывать серверы для любых доступных механизмов взаимодействия сервера и клиента: сокеты, именованные каналы (named pipes), почтовые ящики (mailslots) и проч. |
13.10.2001
Многопоточность с немногопоточными типами? Это просто !
|
|
STL и многие другие библиотеки написаны с учётом эффективности и удобства, но без учёта многопоточности процессов ( и это правильно ), но как же использовать эту кучу кода в многопоточных приложениях без написания эквивалентной кучи кода? |
Работа с потоками в C#
|
24.03.2007
Работа с потоками в C#
|
|
Подробно рассматривается работа с потоками - запуск, завершение, прерывание, блокировки, синхронизация, контексты синхронизации, особенности взаимодействия с апартаментами, а также потоковые возможности .NET - потоковые таймеры, пулы потоков, BackgroundWorker, асинхронные методы и делегаты.
В статье использован материал из книги Joseph Albahari, Ben Albahari "C# 3.0 in a Nutshell" - http://www.oreilly.com/catalog/9780596527570/ |
27.06.2007
Работа с потоками в C#
|
|
Окончание статьи, опубликованной в RSDN Magazine #1-2007. Рассматриваются особенности взаимодействия с апартаментами, потоковые таймеры, пулы потоков, BackgroundWorker, асинхронные методы и делегаты.
В статье использован материал из книги Joseph Albahari, Ben Albahari "C# 3.0 in a Nutshell" - http://www.oreilly.com/catalog/9780596527570/ |
28.07.2011
Работа с потоками в C#
|
|
В третьей части статьи рассматривается Parallel LINQ, класс Parallel, конструкции параллелизма задач, параллельные коллекции, а также структуры SpinLock и SpinWait. В статье использован материал из книги Joseph Albahari, Ben Albahari "C# 4.0 in a Nutshell" — http://oreilly.com/catalog/9780596800963 |
Await && Locks - библиотека синхронизации потоков
|
30.01.2003
Await && Locks
|
|
Await && Locks – это библиотека синхронизации потоков. Необычная библиотека. Необычна она в том смысле, что она предоставляет не ряд классов или функций на все случаи жизни, – она предоставляет ряд конструкций, при помощи которых программист может более четко и ясно выражать свои намерения. |
30.12.2002
Await && Locks
|
|
Прежде чем начать описание внутренностей Await && Locks, я хотел бы объяснить некоторые детали, которые могут показаться странными и неочевидными; а дизайн библиотеки – избыточным и хаотичным. Приведенные ниже действия касаются только проектирования на C++. Я сознательно использую эту комбинацию якобы несовместимых терминов C++ и проектирование, несмотря на то, что C++ считается языком кодирования, а для проектирования обычно используют другие средства, например UML. Это связано с тем, что язык кодирования, так или иначе, оказывает влияние на мышление программиста-проектировщика и как следствие на этап проектирования в целом. |
30.12.2002
Await && Locks
|
|
Следует признать, что код, использующий библиотеку Await && Locks, не столь эффективен, насколько в принципе мог бы быть. Правда, этот недостаток относится больше именно к реализации. Тем не менее, это может стать решающим фактором при принятии решения, использовать ли данную библиотеку или нет. Обобщая, можно поставить вопрос так: «Стоят ли те преимущества, которые дает использование Await && Locks, тех накладных расходов, которые при этом возникнут?». Однозначный ответ я дать не могу. Это зависит от задач, которые собирается решать разработчик. Итак, в чем же заключаются недостатки, и какие выгоды сулит Await && Locks? Рассмотрим особенности данной библиотеки с разных сторон. |