Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WaitForSingleObject vs condition_variable 
:(
    Опции темы
cppGhost
Дата 10.1.2014, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.4.2013

Репутация: нет
Всего: нет



Читаю c++x11 в части многопоточного программирования. Дошел до condition_variable и возник вопрос его аналога до стандарта (а именно в win32). Правильно ли я понимаю, что по сути они реализуют один и тот же механизм: нужно подождать завершения чего либо (или получить об этом сигнал). 

И еще вопрос: а не лучше ли реализована condition_variable в плане траты ресурсов системы? Ну то есть меньше ли при этом поток "ест" ресурсов?
PM MAIL   Вверх
Alexeis
Дата 10.1.2014, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 12
Всего: 459



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


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
baldina
Дата 10.1.2014, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



в некотором смысле можно сказать что это одно и то же. ожидание события в библиотеке под win с большой вероятностью реализовано через WaitFor...
WaitFor... почти не потребляет ресурсов, т.к. управление передается ОС (циклы никуда не деваются, конечно, но ресурсы процессора расходуется экономнее)

Добавлено через 43 секунды
Цитата(Alexeis @  10.1.2014,  13:20 Найти цитируемый пост)
CreateEvent

ну так это тот же HANDLE который надо ждать через WaitFor...

Добавлено через 6 минут и 39 секунд
молва утверждает, что Windows SRW реализован эффективнее, чем блокировки C++11 в VS12
PM MAIL   Вверх
Alexeis
Дата 10.1.2014, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 12
Всего: 459



Цитата(baldina @  10.1.2014,  14:35 Найти цитируемый пост)
ну так это тот же HANDLE который надо ждать через WaitFor...

  Хэндл хэндлу рознь. Понятное дело что используются функции ожидания, но, к примеру, ожидание мьютекса и эвента в win32 имеют различия. Функция WaitFor... , например не сработает если данный поток уже залочил мьютекс, а в случае эвента функции WaitFor... работают идентично для всех потоков, поскольку эвент это событие, момент срабатывания которого (и источник) неизвестен для ОС. Мьютекс же, хотя и работает с той же функцией ожидания, но несет смысловую нагрузку запрета одновременного исполнения участков кода. Поэтому, я считаю что условная переменная ближе по смыслу именно к эвенту, чем к иному механизму Win32


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
xvr
Дата 13.1.2014, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(cppGhost @  10.1.2014,  12:39 Найти цитируемый пост)
Дошел до condition_variable и возник вопрос его аналога до стандарта (а именно в win32)

Там и родной есть (а не только аналог) - http://msdn.microsoft.com/en-us/library/wi...v=vs.85%29.aspx

PM MAIL   Вверх
cppGhost
Дата 20.1.2014, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.4.2013

Репутация: нет
Всего: нет



Вроде написано, что в xp не работает. Значит уже стремно использовать )
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.