Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для Tlya
16 / 16 / 10
Регистрация: 20.11.2015
Сообщений: 305

Поток из цикла

01.06.2017, 05:03. Показов 1320. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, пожалуйста, простой пример где цикл выполняется в отдельном потоке так, чтобы можно было из него доставать [i] и передавать основному потоку?
C++
1
2
3
4
for (int i = 0; i < 5; i++){
//что-то происходит, i меняется
}
int i_novoe; //=i, чтобы менялось после каждого цикла
я знаю что в нете много инфы про потоки, но хотелось бы самое простое решение...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.06.2017, 05:03
Ответы с готовыми решениями:

Выйти из внутреннего цикла, сохранив поток внешнего
#include &lt;stdio.h&gt; int main(void) { int number = 10; int count = 0;// обьявляем и инициализируем переменную/счетчик...

Поле выполнения цикла получается непрерывный поток данных
Здравствуйте! подскажите пожалуйсто, почему у меня после поле выполнения цикла получаетса какой то неперерывный поток данных? ...

Принудительный выход из цикла - отдельный поток или другое решение?
Visual Studio 2008 SP1, диалоговый проект MFC. В таблицу загружаются данные (цикл примерно из 9000 проходов). Операция занимает не 1...

14
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
01.06.2017, 05:29
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void threadFunction(int &a)
{
     a++;
}
 
int main()
{
     int a = 1;
     std::thread thr(threadFunction, std::ref(a));
     thr.join();
     std::cout << a << std::endl; 
     return 0;
}
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
01.06.2017, 10:15
До конца не понял что вам нужно, но если хотите каждую итерацию цикла выделить в отдельный поток и менять данные, то вам нужно как-то подумать о синхронизации между потоками объекта, который будет инкрементироваться, иначе получите гонку за данными, а это UB.
0
 Аватар для Tlya
16 / 16 / 10
Регистрация: 20.11.2015
Сообщений: 305
01.06.2017, 15:59  [ТС]
MrGluck, Простым языком - мне надо выделить [i] для прогрессбара. Если i не выделить форма зависает после определенной итерации.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
01.06.2017, 16:02
Какими средствами пользуешься?
0
 Аватар для Tlya
16 / 16 / 10
Регистрация: 20.11.2015
Сообщений: 305
01.06.2017, 16:05  [ТС]
nmcf, пока написал что-то типа...
C++
1
2
3
Thread^ newThread = gcnew Thread( gcnew ThreadStart( this, &Form1::POVTOR) );
            newThread->Start();
            newThread->Join();
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
01.06.2017, 16:17
Снова CLI? Что же вы так любите эту поделку?
Цитата Сообщение от Tlya Посмотреть сообщение
чтобы можно было из него доставать [i] и передавать основному потоку?
Сделай i глобальной, и основной поток сможет её просто считывать. Как вариант.
1
 Аватар для Tlya
16 / 16 / 10
Регистрация: 20.11.2015
Сообщений: 305
01.06.2017, 16:18  [ТС]
nmcf, как вариант, попробую, спасибо за совет!
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
01.06.2017, 21:30
Цитата Сообщение от nmcf Посмотреть сообщение
Сделай i глобальной
У них там (C++/CLI) проблемы с этим.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
01.06.2017, 21:47
С чем именно?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
01.06.2017, 21:55
Цитата Сообщение от nmcf Посмотреть сообщение
С чем именно?
С глобальными переменными.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
01.06.2017, 22:05
Ну класс тогда создать с переменной. С этим тоже проблемы?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
01.06.2017, 22:45
Цитата Сообщение от nmcf Посмотреть сообщение
С этим тоже проблемы?
У меня спрашиваешь? Я с этой "ботвой" (C++/CLI) не знаком, по глобальным переменным, там, темы попадались.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18307 / 14231 / 5368
Регистрация: 17.03.2014
Сообщений: 28,904
Записей в блоге: 1
01.06.2017, 23:22
Tlya, посмотри класс BackgroundWorker. Он упрощает запуск кода в отдельном потоке с возможностью отслеживания прогресса операции.
0
 Аватар для Tlya
16 / 16 / 10
Регистрация: 20.11.2015
Сообщений: 305
02.06.2017, 00:56  [ТС]
OwenGlendower, посмотрю, спс за совет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.06.2017, 00:56
Помогаю со студенческими работами здесь

Не создаются новые потоки при распараллеливании цикла for (работает только один поток - главный)
Доброго времени суток, ребята! Пишу код по распараллеливанию умножения матриц. Всё вроде работает верно, но есть один момент OMP не...

составить блок-схему алгоритмов для решения задач с использованием трех циклов цикла с постусловием, цикла с предусловием и цикла с параметрами
помогите составить блок-схему алгоритмов для решения задач с использованием трех циклов цикла с постусловием, цикла с предусловием и цикла...

Создал поток. В нем выделил буффер. Поток выполнился, но из за буфера ругнулся.
В функции треда создал буфер char tbuf;но после того как тред выполнился выскочила ошибка Run-Time Check Failure #2 - Stack around the...

Поток освобождается, но переменная, которой был присвоен этот поток, не очищается
Мне интересно, вот поток отработал, стоит FreeOnTerminate:=True; Поток освобождается, но переменной которой было присвоен этот поток, не...

Разработать программу, в которой основной поток, принимает поток ввода и контролирует созданные потоки.
что-то не-то с кодом. 2 дня ломаю голову :( //#define _REENTRANT #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru