25 / 25 / 11
Регистрация: 02.01.2012
Сообщений: 371

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

06.05.2013, 19:34. Показов 5430. Ответов 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
33479 / 21577 / 8250
Регистрация: 22.10.2011
Сообщений: 37,038
Записей в блоге: 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение 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) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru