![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| cppGhost |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 24.4.2013 Репутация: нет Всего: нет |
Читаю c++x11 в части многопоточного программирования. Дошел до condition_variable и возник вопрос его аналога до стандарта (а именно в win32). Правильно ли я понимаю, что по сути они реализуют один и тот же механизм: нужно подождать завершения чего либо (или получить об этом сигнал).
И еще вопрос: а не лучше ли реализована condition_variable в плане траты ресурсов системы? Ну то есть меньше ли при этом поток "ест" ресурсов? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Самое похожее, что приходить в голову это эвенты (CreateEvent) . Поток ждет возникновения события, в случае условной переменно ждет возникновения условия.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
в некотором смысле можно сказать что это одно и то же. ожидание события в библиотеке под win с большой вероятностью реализовано через WaitFor...
WaitFor... почти не потребляет ресурсов, т.к. управление передается ОС (циклы никуда не деваются, конечно, но ресурсы процессора расходуется экономнее) Добавлено через 43 секунды ну так это тот же HANDLE который надо ждать через WaitFor... Добавлено через 6 минут и 39 секунд молва утверждает, что Windows SRW реализован эффективнее, чем блокировки C++11 в VS12 |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Хэндл хэндлу рознь. Понятное дело что используются функции ожидания, но, к примеру, ожидание мьютекса и эвента в win32 имеют различия. Функция WaitFor... , например не сработает если данный поток уже залочил мьютекс, а в случае эвента функции WaitFor... работают идентично для всех потоков, поскольку эвент это событие, момент срабатывания которого (и источник) неизвестен для ОС. Мьютекс же, хотя и работает с той же функцией ожидания, но несет смысловую нагрузку запрета одновременного исполнения участков кода. Поэтому, я считаю что условная переменная ближе по смыслу именно к эвенту, чем к иному механизму Win32 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Там и родной есть (а не только аналог) - http://msdn.microsoft.com/en-us/library/wi...v=vs.85%29.aspx |
|||
|
||||
| cppGhost |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 24.4.2013 Репутация: нет Всего: нет |
Вроде написано, что в xp не работает. Значит уже стремно использовать )
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |