Эффективная многопоточность
От: Алексей Ширшов Россия http://wise-orm.com
Дата: 11.08.03 03:48
Оценка: 1071 (36) +1
Статья:
Эффективная многопоточность
Автор(ы): Алексей Ширшов
Дата: 03.08.2003
Статья посвящена системным механизмам, организующим (или помогающим организовать) пул потоков. Рассматриваются базовые, универсальные сервисы, с помощью которых можно реализовывать серверы для любых доступных механизмов взаимодействия сервера и клиента: сокеты, именованные каналы (named pipes), почтовые ящики (mailslots) и проч.


Авторы:
Алексей Ширшов

Аннотация:
Статья посвящена системным механизмам, организующим (или помогающим организовать) пул потоков. Рассматриваются базовые, универсальные сервисы, с помощью которых можно реализовывать серверы для любых доступных механизмов взаимодействия сервера и клиента: сокеты, именованные каналы (named pipes), почтовые ящики (mailslots) и проч.
Re: Эффективная многопоточность
От: RunderBin Россия  
Дата: 18.05.07 12:15
Оценка:
Здравствуйте, Алексей Ширшов, Вы писали:

АШ>Статья:

АШ>Эффективная многопоточность
Автор(ы): Алексей Ширшов
Дата: 03.08.2003
Статья посвящена системным механизмам, организующим (или помогающим организовать) пул потоков. Рассматриваются базовые, универсальные сервисы, с помощью которых можно реализовывать серверы для любых доступных механизмов взаимодействия сервера и клиента: сокеты, именованные каналы (named pipes), почтовые ящики (mailslots) и проч.


АШ>Авторы:

АШ> Алексей Ширшов

АШ>Аннотация:

АШ>Статья посвящена системным механизмам, организующим (или помогающим организовать) пул потоков. Рассматриваются базовые, универсальные сервисы, с помощью которых можно реализовывать серверы для любых доступных механизмов взаимодействия сервера и клиента: сокеты, именованные каналы (named pipes), почтовые ящики (mailslots) и проч.


Хочу только добавить одно замечание:



BOOL ChangeTimerQueueTimer(
HANDLE TimerQueue, // хендл очереди таймеров
HANDLE Timer, // хендл таймера
ULONG DueTime, // новое значение задержки перед вызовом
ULONG Period // новое значение периода вызова
);


Функция вопросов не вызывает, однако нужно отметить, что она не оказывает влияния на «одноразовые» (one-shot) таймеры, при создании которых в качестве периода был указан 0.



Эта функция действительно не работает с таймерами, период которых = 0. Но пока этот "единичный" таймер не отработал, она прекрасно меняет оба параметра:

BOOL bRet = CreateTimerQueueTimer(&hTimer, hQueue, (WAITORTIMERCALLBACK)TimerRoutine, NULL, 30000, 0, 0);
ChangeTimerQueueTimer(hQueue, hTimer, 10000, 0); // еще не прошло 30 секунд
ChangeTimerQueueTimer(hQueue, hTimer, 2000, 500); // еще не прошло даже 10 секунд.

И через 2 секунды, именно через 2, без учета времени которое прошло до вызова последнего ChangeTimerQueueTimer!
Т.е. счетик как бы заново запускается при вызове ChangeTimerQueueTimer вне зависимости от вида таймера, главное, чтобы он еще не отработал свое.

А так, статья замечательная.
Люди — ангелы презирающие условности, желающие восстановить друвнейшую связь со звездной динамомашиной в вечности мироздания
Re: Эффективная многопоточность
От: Аноним  
Дата: 26.05.09 07:26
Оценка:
Здравствуйте, Алексей Ширшов, Вы писали:

АШ>Статья:

АШ>Эффективная многопоточность
Автор(ы): Алексей Ширшов
Дата: 03.08.2003
Статья посвящена системным механизмам, организующим (или помогающим организовать) пул потоков. Рассматриваются базовые, универсальные сервисы, с помощью которых можно реализовывать серверы для любых доступных механизмов взаимодействия сервера и клиента: сокеты, именованные каналы (named pipes), почтовые ящики (mailslots) и проч.


АШ>Авторы:

АШ> Алексей Ширшов

АШ>Аннотация:

АШ>Статья посвящена системным механизмам, организующим (или помогающим организовать) пул потоков. Рассматриваются базовые, универсальные сервисы, с помощью которых можно реализовывать серверы для любых доступных механизмов взаимодействия сервера и клиента: сокеты, именованные каналы (named pipes), почтовые ящики (mailslots) и проч.


Поздновато ,конечно,но замечу неточности по поводу упоминания Рихтера
Во-первых про BindIoCompletionCallback он пишет , что "Вы должны передавать 0 в параметре dwFlags"
Во-вторых "the number of concurrently runnable threads is !limited! to 2 times the number of CPUs"
В остальное пока не вникал.

Кстати возникла проблема в visual 2005 Студия видит прототип BindIoCompletionCallback а компилятор утверждает что
'BindIoCompletionCallback': identifier not found
Re[2]: Эффективная многопоточность
От: WinUser  
Дата: 26.05.09 07:49
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Кстати возникла проблема в visual 2005 Студия видит прототип BindIoCompletionCallback а компилятор утверждает что

А> 'BindIoCompletionCallback': identifier not found
Проблема оказалась в stdafx.h , точнее во мне.
Re: Эффективная многопоточность
От: Аноним  
Дата: 26.05.09 09:41
Оценка:
Здравствуйте, Алексей Ширшов, Вы писали:

АШ>Статья:

АШ>Эффективная многопоточность
Автор(ы): Алексей Ширшов
Дата: 03.08.2003
Статья посвящена системным механизмам, организующим (или помогающим организовать) пул потоков. Рассматриваются базовые, универсальные сервисы, с помощью которых можно реализовывать серверы для любых доступных механизмов взаимодействия сервера и клиента: сокеты, именованные каналы (named pipes), почтовые ящики (mailslots) и проч.


К списку функций, которые могут быть использованы с портом завкршения, можно добавить следующие "сокетные"
Скорее всего есть и другие, те же WSARecvFrom и WSASendTo, просто перечисленные я реально использовал с портом завершения.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.