Свобода кода

блог программиста

Поиск по блогу

Общие советы разработчикам.

13 Март 2010 . Alex пишет -

Многозадачная и многопоточная среда Win32 предоставляет широкие возможности для написания высокоэффективных приложений. Однако, написание приложений, использующих многопоточность и взаимодействующих друг с другом, при неаккуратном программировании может привести к их неверной работе, неоправданной загрузке и даже блокировке всей системы. Во избежание этого следуйте нижеприведенным рекомендациям: (далее…)

Рубрики: Синхронизация процессов

Защищенный доступ к переменным (Interlocked Variable Access)

13 Март 2010 . Alex пишет -

Часто возникает необходимость совершения операций над разделяемыми между потоками 32-разрядными переменными. Для упрощения решения этой задачи WinAPI предоставляет функции для защищенного доступа к ним, не требующие использования дополнительных (и более сложных) механизмов синхронизации.
(далее…)

Рубрики: Синхронизация процессов

Дополнительные механизмы синхронизации. Критические секции.

13 Март 2010 . Alex пишет -

Критические секции – это механизм, предназначенный для синхронизации потоков внутри одного процесса. Как и мутекс, критическая секция может в один момент времени принадлежать только одному потоку, однако, она предоставляет более быстрый и эффективный механизм, чем мутексы. Перед использованием критической секции необходимо инициализировать её функцией:
procedure InitializeCriticalSection(
var lpCriticalSection: TRTLCriticalSection
); stdcall; (далее…)

Рубрики: Синхронизация процессов

Дополнительные объекты синхронизации.

12 Март 2010 . Alex пишет -

Устройство стандартного ввода с консоли (console input)
Идентификатор, стандартного устройства ввода с консоли, полученный при помощи вызова функции GetStdHandle(STD_INPUT_HANDLE), можно использовать в функциях ожидания. Он находится в сигнальном состоянии, если очередь ввода консоли непустая и в несигнальном, если пустая. Это позволяет организовать ожидание ввода символов, либо, при помощи функции WaitForMultipleObjects совместить его с ожиданием каких-то других событий. (далее…)

Рубрики: Синхронизация процессов

Объекты синхронизации. Сhange notification.

9 Март 2010 . Alex пишет -

Некоторые объекты Win32 API не предназначены исключительно для целей синхронизации, однако могут использоваться с функциями синхронизации. Такими объектами являются, например, сообщение об изменении папки (change notification)
Windows позволяет организовать слежение за изменениями объектов файловой системы. Для этого служит функция
function FindFirstChangeNotification(
lpPathName: PChar; // Путь к папке, изменения в которой нас
// интересуют
bWatchSubtree: BOOL; // Задает необходимость слежения за
// изменениями во вложенных папках
dwNotifyFilter: DWORD // Фильтр событий
): THandle; stdcall; (далее…)

Рубрики: Синхронизация процессов

Объекты синхронизации. Waitable timer (таймер ожидания).

3 Март 2010 . Alex пишет -

Таймер ожидания отсутствует в Windows 95 и для его использования необходима Windows 98 или Windows NT 4.0 и выше.
Таймер ожидания переходит в сигнальное состояние по завершении заданного интервала времени. Для его создания используется функция:
function CreateWaitableTimer(
lpTimerAttributes: PSecurityAttributes; // Адрес структуры
// TSecurityAttributes
bManualReset: BOOL; // Задает, будет ли таймер переходить в
// сигнальное состояние по завершении функции
// ожидания
lpTimerName: PChar // Имя объекта
): THandle; stdcall;
(далее…)

Рубрики: Синхронизация процессов

Объекты синхронизации. Semaphore (семафор).

2 Март 2010 . Alex пишет -

Семафор представляет собой счетчик, содержащий целое число в диапазоне от 0 до заданной при его создании максимальной величины. Счетчик уменьшается каждый раз, когда поток успешно завершает функцию ожидания, использующую семафор и увеличивается вызовом функции ReleaseSemaphore. При достижении семафором значения 0 он переходит в несигнальное состояние, при любых других значениях счетчика – его состояние сигнальное. Такое поведение позволяет использовать семафор в качестве ограничителя доступа к ресурсу, поддерживающему заранее заданное количество подключений. (далее…)

Рубрики: Синхронизация процессов

Объекты синхронизации. Mutex (Mutually Exclusive).

26 Февраль 2010 . Alex пишет -

Мутекс – это объект синхронизации, который находится в сигнальном состоянии только тогда, когда он не принадлежит ни одному из процессов. Как только хотя бы один процесс запрашивает владение мутексом, он переходит в несигнальное состояние и остается в нем до тех пор, пока не будет освобожден владельцем. Такое поведение позволяет использовать мутексы для синхронизации совместного доступа нескольких процессов к разделяемому ресурсу. Для создания мутекса используется функция: (далее…)

Рубрики: Синхронизация процессов

Объекты синхронизации. Event.

18 Февраль 2010 . Alex пишет -

Объектами синхронизации называются объекты Windows, идентификаторы которых могут использоваться в функциях синхронизации. Они делятся на две группы – объекты, использующиеся только для синхронизации и объекты, которые используются в других целях, но могут вызывать срабатывание функций ожидания. К первой группе относится, в частности событие - Event. (далее…)

Рубрики: Синхронизация процессов

Прерывание ожидания по запросу

17 Декабрь 2009 . Alex пишет -

Windows поддерживает асинхронные вызовы процедур. При создании каждого потока (thread) с ним ассоциируется очередь асинхронных вызовов процедур (APC queue). Операционная система (или приложение пользователя, при помощи функции QueueUserAPC) может помещать в неё запросы на выполнение функций в контексте этого потока. Эти функции не могут быть выполнены немедленно, поскольку поток может быть занят. Поэтому, операционная система вызывает их, когда поток вызывает одну из следующих функций ожидания: (далее…)

Рубрики: Синхронизация процессов
стр 1 из 212»