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

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

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

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

05.11.2009, 21:09. Просмотров 671. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сложность с потоками: программа виснет (C++):

Виснет программа - C++
Задача следующая: Напишите программу, которая приблизительно рассчитывает значение математической константы е, используя формулу : е = 1 +...

программа виснет, не знаю что не так - C++
Дана квадратная целочисленная матрица. Определить, является ли она магическим квадратом. В магическом квадрате сумма чисел по всем...

Компилятор не находит ошибок, программа виснет вначале - C++
Есть два кода, в обоих случаях после ввода первых значений виснет программа. ОС Windows 7 компилятор DEV C++ (4.9.9.2) Задание №1 ...

Программа виснет при переходе в функцию function - C++
#include &lt;iostream&gt; using namespace std; void function(char * string) { while(*string) { cout&lt;&lt;*string; ...

Программа виснет, когда ничего не делаешь (WINAPI) - C++
Доброго времени суток. Наконец-то дело подошло к концу, но на финишной прямой ждал неприятный сюрприз. Зависает на ровном месте...

Почему без пустого целочисленного поля в базовом классе программа виснет? - C++
Итак, имеет три маленьких файлика: //expclasses10l.h class CLB { public: int erunda; CLB(); ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Логос
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 запускает как хочет.Блокируйте процесс
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2009, 11:48
Привет! Вот еще темы с ответами:

Небольшая сложность - C++
Я создал проект, сохранил, попытался открыть, но на месте отладки появилось &quot;присоединить&quot;, при нажатии которого выдаёт окошко с кучей...

Сложность алгоритмов - C++
Добрый день, пытаюсь оценить сложность алгоритмов, но возникли сомнения в правильности рассчетов. Собственно рассматриваю два алгоритма -...

Сложность с getline() - C++
Дорогие форумчане! Возникла сложность при использовании getline(). Допустим, у нас есть такой код: int a,b; string s; cin&gt;&gt;a; ...

Сложность в реализации команды - C++
Программа открывает окно, заголовком которого является командная строка. Обеспечить возможность перетаскивания окна за любую точку его...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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