Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Синхрноизация в Windows


Автор: Royan 3.4.2005, 21:04
Мой вопрос основывается на серии MSDN'вских статей под общим названием Using Synchronization
Итак, для того чтобы синхронизироваться в Win32 есть такие иснструменты:
  • Мьютексы создаем с помощью CreateMutex();
  • Семафоры создаем с помощью CreateSemaphore();
  • Комбинация событий CreateEvent() и WaitForMultipleObjects()
  • Критические секции EnterCriticalSection()
  • Очереди таймеров (что-то в этом духе) комбинация CreateTimerQueue(), CreateTimerQueueTimer(), WaitForSingleObject()
  • Ждущий таймер комбинация CreateWaitableTimer() WaitForSingleObject()
  • InterlockedPushEntrySList() InterlockedPopEntrySList()
А теперь вопрос, так в чем принципиальное отличие задачи где должен быть применен мьютекса или, в ином случае семафор?
Равно как в каком случае надо использовать очередь из таймеров, а в каком надо создать события?

Автор: NiJazz 3.4.2005, 21:15
Событие - это и есть событие. Вот создаёшь его, возбуждаешь и читаешь. Всё просто!
Мьютекс - флаг доступа к объекту. Семафор - мьютекс со счётчиком. =) Хочешь объект - завладей мьютексом. Вот и всё! А остальное - читай MSDN. smile

Автор: Nastya 5.4.2005, 08:31
в принципе почти все из них взаимозаменяемы, только вопрос в том, что тебе удобнее на данный момент, извените, но опять посылаю к Рихтеру smile Просто нет смысла пересказывать то о чем пол книги написано smile

Автор: Royan 5.4.2005, 16:16
А как бишь-те у Рихтера книга называется?

Автор: chipset 5.4.2005, 17:27
http://anatolix.naumen.ru/Books/Richter?v=68d

Автор: Royan 5.4.2005, 18:44
Спасибо скачал.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)