Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Логос
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 8
#1

Сложность с потоками: программа виснет - C++

05.11.2009, 21:09. Просмотров 659. Ответов 2
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    LPVOID u1=new LPVOID();
    Param* pStruct1 = reinterpret_cast<Param*>(u1);
    LPVOID u2=new LPVOID();
    Param* pStruct2 = reinterpret_cast<Param*>(u2);
    pStruct1 = p1;
    pStruct2 = p2;
 
    DWORD dwThreadId;
 
    for (i=0; i<1999;i++)
    {
        HANDLE hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Counting,(LPVOID)pStruct1,0,&dwThreadId);
        Counting(pStruct2);
        if(WaitForSingleObject(hThread, 1)!=WAIT_OBJECT_0)
            TerminateThread(hThread, 0);
    }
Всем привет!
Думаю, вопрос достаточно тревиальный, но все же поставил меня, новичка, в тупик.

Суть проблемы: программа, в которой используется данный фрагмент виснет в вероятностью 50%. В зависимости от того, какой поток завершает выполнение в последний шаг цикла.
Подозреваю, что копать нужно в сторону мудрого слова "синхронизация"? Подскажите, что поправить, чтобы последний шаг цикла завершался всегда!

Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2009, 21:09     Сложность с потоками: программа виснет
Посмотрите здесь:

Программа виснет, когда ничего не делаешь (WINAPI) C++
программа виснет, не знаю что не так C++
C++ Виснет программа
C++ Вычислительная сложность CRC32
C++ Небольшая сложность
C++ Компилятор не находит ошибок, программа виснет вначале
Программа виснет при переходе в функцию function C++
Определить сложность алгоритма C++
C++ сложность со структурами и файлами
C++ Почему без пустого целочисленного поля в базовом классе программа виснет?
Сложность алгоритмов C++
Сложность с getline() C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Логос
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 8
06.11.2009, 00:33  [ТС]     Сложность с потоками: программа виснет #2
Где-то по-соседству вычитал, что TerminateThread использовать моветон. Правда что же нужно использовать на самом деле так и не разобрался. Интуиция подсказывает, что именно тут и стоит искать первопричину глюков..

Опытным путем установлено, что если убрать мою попытку завершения процесса - программа срабатывает раза 3, с 4-го запуска начинает падать(что в целом мне кажется ожидаемым)..

Подскажите!
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
06.11.2009, 11:48     Сложность с потоками: программа виснет #3
thread windows запускает как хочет.Блокируйте процесс
Yandex
Объявления
06.11.2009, 11:48     Сложность с потоками: программа виснет
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru