![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Michrutka |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 6.2.2008 Репутация: нет Всего: нет |
Здравствуйте, граждане форумчане!
есть консольное приложение, в кот генерится заданное кол-во потоков, выполняющих одну и ту же мат функцию. для синхронизации использую WaitForMultipleObjects, то есть жду пока ВСЕ потоки завершат свою работу и потом уже вывожу результаты. проблема возникает как раз в WaitForMultipleObjects - он возвращает WAIT_FAILED с ошибкой 87: Параметр задан неверно. причем ошибка возникает при числе потоков > 65. Подскажите, пожалуйста, в чем может быть ошибка?? Может это потому, что потоки отрабатывают слишком быстро и _beginthreadex возвращает неверный хандл? что-то такое в MSDN было написано. но создание остановленного потока (CREATE_SUSPENDED) и последующий запуск не помогает. привожу код: функция main
Класс обертка для потоков
Описание структуры - переменных
Фнкция кот, вызывается в потоке
Это сообщение отредактировал(а) Michrutka - 2.6.2010, 11:38 |
||||||||
|
|||||||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
Функция WaitForMultipleObjects не может ожидать более 64 потоков. Это сообщение отредактировал(а) Dem_max - 2.6.2010, 12:03 -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| Michrutka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 6.2.2008 Репутация: нет Всего: нет |
Dem_max, Спасибо!
вот те раз. а какой тогда выход? задача - одновременно хотя бы 1000-2000 потоков. разбивать по блокам в 64 штуки и отслеживать все эти блоки?? или есть уже придуманный велосипед? |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
Michrutka, в бусте надо посмотреть, там уже есть пулы готовые...
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
Да разбивать на блоки
В итоге этот велосипед называется "пул потоков" Велосипедов в инете много. Есть мелкософтовские функции читай тут http://msdn.microsoft.com/en-us/library/ms...0(v=VS.85).aspx Это сообщение отредактировал(а) Dem_max - 2.6.2010, 12:14 -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| Michrutka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 6.2.2008 Репутация: нет Всего: нет |
jonie,
Dem_max, Понял. спасибо большое. пошел копать в этом направлении |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |