Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/26: Рейтинг темы: голосов - 26, средняя оценка - 4.92
25 / 25 / 11
Регистрация: 02.01.2012
Сообщений: 371

Запуск потоков

06.05.2013, 19:34. Показов 5415. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На Qt не смотрите, ошибка в _beginthreadex

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
 
    DWORD WINAPI ParceLinks(void* param);
};
 
#endif // MAINWINDOW_H
C++
1
2
3
4
5
6
7
8
HANDLE *hThreads = new HANDLE[QtyOfThreads];
    DWORD *idThreads = new DWORD[QtyOfThreads];
 
    for(int i=0;i<QtyOfThreads;i++)
    {
        hThreads[i] = (HANDLE)_beginthreadex(NULL,0,&ParceLinks,NULL,0,&idThreads[i]);
    }
    WaitForMultipleObjects((DWORD)QtyOfThreads,hThreads,true,INFINITE);
ошибка: C2276: &: *Ґ¤®ЇгбвЁ¬*п ®ЇҐа*жЁп б ўла*¦Ґ*ЁҐ¬ ЇаЁўп§***®© дг*ЄжЁЁ-з«Ґ*
Т.е. ненужный &, но как без этого? весь гугл перерыл, все по мануалу, но ошибка вылетает
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.05.2013, 19:34
Ответы с готовыми решениями:

Паралельный запуск потоков
есть функции if(this-&gt;OpenDataFile()){ if(this-&gt;CreateMutexHandle()){ if(this-&gt;ReadGateInfoFile()){ ...

Запуск exe-файла с перенаправлением потоков
Есть приложение prog.exe. Есть 2 файла: input.txt, output.txt В моей программе я хочу создать процесс prog.exe, который прочитает данные...

Область видимости общей переменной для потоков + закрытие потоков
Есть два вопроса про потоки. Первый. Как можно сделать общую переменную для основного потока и моих ? struct ThreadInfo1 { int...

39
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.05.2013, 02:57
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от BuGi Посмотреть сообщение
Я читал про QThread, но там надо создавать класс наследник и тд. Мне показалось удобней запускать потоки напрямую, чем через другие классы
Изначально не хорошо - кроссплатформенность теряется это во первых.
Во вторых для удобства нужно будет самому писать класс обвертку над WinApi.
И в третьих тебе будет нужно думать и гадать как реализовать взаимодействие этого класса с классами Qt
0
25 / 25 / 11
Регистрация: 02.01.2012
Сообщений: 371
11.05.2013, 20:45  [ТС]
Да я стал юзать qt только из-за легких http запросов) О кроссплатформенности и не задумывался

Добавлено через 17 часов 29 минут
Я, кстати, так и не решил этот вопрос.
У меня главный поток запускает дочерние, которые выполняют http запрос и увеличивают счетчик, записывая юрл в файл и изменяя значение в окне, или просто продолжают работу.
Я пытался сделать так:
C++
1
2
3
4
::EnterCriticalSection(&wFile);
WriteLink(link);
ui->label_6->setNum(++iTotalGoodLinks);
::LeaveCriticalSection(&wFile);
В главном потоке
C++
1
while(bFileIsReadable){}
В итоге я получаю, что главное окно жутко лагает и проц грузится на 100%. Если главному потоку поручить изменение значения в окне, то просто окно лагает. Не подскажите алгоритм, как разобраться с этим?
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.05.2013, 21:31
Ну так а зачем поток когда QNetworkAccessmanager и так многопоточный внутри ?
0
25 / 25 / 11
Регистрация: 02.01.2012
Сообщений: 371
11.05.2013, 21:32  [ТС]
Я это уже сделал, после чего конец функции-потока стал выполняться раньше середины
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.05.2013, 21:34
Цитата Сообщение от BuGi Посмотреть сообщение
Да я стал юзать qt только из-за легких http запросов
Ну так для этого можно использовать curl, или просто winapi ...

Добавлено через 47 секунд
Цитата Сообщение от BuGi Посмотреть сообщение
Я это уже сделал, после чего конец функции-потока стал выполняться раньше середины
Ниче не понял ...
0
25 / 25 / 11
Регистрация: 02.01.2012
Сообщений: 371
11.05.2013, 21:42  [ТС]
Ну выполнялось начало функции, потом конец, а потом только середина
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.05.2013, 21:44
Какой ф-ции ты о чем ?
0
25 / 25 / 11
Регистрация: 02.01.2012
Сообщений: 371
11.05.2013, 21:46  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Какой ф-ции ты о чем ?
Ну так а зачем поток когда QNetworkAccessmanager и так многопоточный внутри ?
Функции с таким алгоритмом
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.05.2013, 21:47
С каким алгоритмом ?

QNetworkAccessmanager сам распределяет внутри себя по потокам, только запросы кидай, да обрабатывай правильно, не нужны никакие потоки.
0
25 / 25 / 11
Регистрация: 02.01.2012
Сообщений: 371
11.05.2013, 22:00  [ТС]
https://www.cyberforum.ru/post4471173.html
Там функция и описание бага
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.05.2013, 22:06
Ну ты если пихать куда попало и что попала, то чего удивляться что работает не правильно ?
Кстати там вроде ответил что нефиг пытаться пихать QNetworkAccessmanager в поток но многопоточный ...

Добавлено через 2 минуты
Цитата Сообщение от BuGi Посмотреть сообщение
Не знаю, но мне кажется, что сначала исполняется начало функции, далее конец (!) и только потом середина. Т.е. если я добавлю в конец delete nmanager; , то вообще никакие запросы не идут
Это как компонент еще не закончил запрос и ты его удаляешь ?
Как он по твоему должен отреагировать ?

Тут учить Qt могу посоветовать ...
0
25 / 25 / 11
Регистрация: 02.01.2012
Сообщений: 371
11.05.2013, 22:11  [ТС]
Ну допустим, тут я понял. А с тем что не так?
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.05.2013, 22:13
И суть в том, что кнопка во время работы должна быть отключена, но она внезапно включается Оо (!)А если убрать в конце setEnabled(true), то все нормально (то есть она отключается, но на совсем). И далее totalglinks увеличивается, но почему-то не выполняется действие ui->label_6->setNum(totalglinks);
не подскажите причину? в соседней функции все нормально работает подобным образом
Все тоже самое ? Ф-ция, а точнее слот кнопки
C++ (Qt)
1
void MainWindow::on_ParceButton_clicked()
выполняется раньше чем запросы, ясное дело кнопка разблокирывается раньше чем надо...
0
25 / 25 / 11
Регистрация: 02.01.2012
Сообщений: 371
11.05.2013, 22:15  [ТС]
Как тогда дождаться завершения?
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.05.2013, 22:18
А это ты тебе нафига
C++ (Qt)
1
connect(nmanager, SIGNAL(finished(QNetworkReply*)),SLOT(FinishedSlot(QNetworkReply*,string)));
??

В последнем слоте FinishedSlot() к примеру.

А вообще нужно в доке посмотреть, может предусмотрено что-то более удобное
0
25 / 25 / 11
Регистрация: 02.01.2012
Сообщений: 371
12.05.2013, 00:37  [ТС]
Это старое, string убрал.

Добавлено через 2 часа 17 минут
Но пока вопрос в том, как сделать, чтобы работал код с созданием потоков через _beginthreadex
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33478 / 21576 / 8250
Регистрация: 22.10.2011
Сообщений: 37,034
Записей в блоге: 12
12.05.2013, 00:41
Ребята, если вы тут обсуждаете Qt-шные вещи, так я перенесу тему. Или ближе к WinAPI...
0
25 / 25 / 11
Регистрация: 02.01.2012
Сообщений: 371
12.05.2013, 00:44  [ТС]
Не, тут вопрос был, как отладить то) Хотя я понял, почему то не работало
0
12.05.2013, 00:49

Не по теме:

Цитата Сообщение от UI Посмотреть сообщение
Ребята, если вы тут обсуждаете QT-шные вещи, так я перенесу тему. Или ближе к WinAPI...
Да просто боюсь что в конечном счете, окажется что ТС зря людей мучал

0
25 / 25 / 11
Регистрация: 02.01.2012
Сообщений: 371
12.05.2013, 13:33  [ТС]
Но даже если так, то на будущее понадобиться. Хочется просто знать из-за чего это не работает

Добавлено через 1 час 24 минуты
Суть даже не в http запросах, а в синхронизации между потоками, вывод в окно из дочерних потоков и тд, именно с этим проблемы, а не http

Добавлено через 11 часов 16 минут
Я попробовал все это убрать и оставил только WaitForMultipleObjects, так у меня только выключился ui, проц был 0% загружен и все нормально. Есть же сотни программ, где и потоки работают и ui? Может создать отдельный поток, который будет контролировать состояние этих кнопочек и сам себя тормозить с помощью WaitForMultipleObjects?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.05.2013, 13:33

Запуск потоков по таймеру
Задача следующая, нужно запускать потоки в разное время, они будут парсить определенные сайты, допустим один сайт раз в 10 мин другой раз в...

Запуск нескольких потоков
По отдельности каждый поток запускается, как мне сделать так, чтобы при нажатии кнопки 1 у меня запускались уже 3 созданных потока ( я их...

Повторный запуск потоков
Добрый день всем. Необходима ваша помощь в следующем вопросе. Есть некий гипотетический код: while (true) { Thread Thrd = new...

Запуск потоков из цикла
Добрый день. Пытаюсь реализовать много поточное движение неких объектов. В классе объекта: @Override public void run() { ...

Запуск потоков Tthread в цикле
Из главного потока пытаюсь запустить еще несколько потоков. Код упрощен для восприятия, но суть не меняется. // главный поток ...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru