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

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

Войти
Регистрация
Восстановить пароль
 
Eni87
Сообщений: n/a
#1

Передача параметра в потоки - C++

22.07.2012, 13:44. Просмотров 1073. Ответов 7
Метки нет (Все метки)

Добрый день уважаемые форумчане!
Подскажите как правильно сделать передачу параметров в поток. В качестве параметра нужно передать число.

Потоки создаю в цикле, хотя собственно вот пример кода.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <Windows.h>
#include <process.h>
unsigned __stdcall potok(void* Param)
{
        static int p = (int)Param;
        char buffer[100];
        wsprintf(buffer,"%u",p);
        MessageBox(0,buffer,"",0); // вывожу в messag параметры, но выводятся 7 - 8 значные 
 //одинаковые числа
        return 0;
}
 
int main ()
{
    for(int i  = 0; i < 10; i++)
    {
        Sleep(500);
        _beginthreadex (NULL,0,&potok, &i ,0, NULL);  // передаю переменную i в поток
    } 
    Sleep(100000);
    return 0;
}
Проблема видимо в том что я передаю адрес переменной, а в цикле она изменяет значение и поэтому в MessageBox выводятся совсем другое.

Подскажите, как правильно передать изменяемую переменную в качестве параметра? Заранее спасибо..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.07.2012, 13:44     Передача параметра в потоки
Посмотрите здесь:

передача параметра - C++
привет всем ! вот код #include &lt;iostream&gt; using namespace std; struct book { char title; char authors; char...

Передача инкрементирующегося параметра - C++
Добрый день, подскажите пожалуйста, почему сначала выводится самое большое число. void prt1(int i, int i1, int i2) { cout&lt;&lt;&quot;1....

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

Передача параметра по ссылке - C++
Здравствуйте! Подскажите пожалуйста! Делаю пример из книги: #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace...

Передача параметра функции - C++
Подскажите пожалуйста каким образом передавать уже явные параметры CreateRectRgn в параметры BitBlt или StreatchBlt не прибегая к...

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

передача параметра в класс - C++
в методе я вывожу поля класса по условию, как передавать в класс переменную х, и использовать х в условии метода age&gt;x,можно ли в цикле...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nick Alte
Эксперт С++
1628 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,931
Завершенные тесты: 1
22.07.2012, 14:00     Передача параметра в потоки #2
C
1
_beginthreadex (NULL,0,&potok, (void*)i ,0, NULL);
C++
1
_beginthreadex (NULL,0,&potok, reinterpret_cast<void*>(i) ,0, NULL);
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
22.07.2012, 14:08     Передача параметра в потоки #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <Windows.h>
#include <process.h>
unsigned __stdcall potok(void* Param)
{
        static int *p = (int*)Param;
        char buffer[100];
        wsprintf(buffer,"%u",*p);
        MessageBox(0,buffer,"",0); // вывожу в messag параметры, но выводятся 7 - 8 значные 
 //одинаковые числа
        _endthreadex(0);
        return 0;
}
 
int main ()
{
    for(int i  = 0; i < 10; i++)
    {
        Sleep(500);
        _beginthreadex (NULL,0,&potok, &i ,0, NULL);  // передаю переменную i в поток
    } 
    Sleep(100000);
    return 0;
}
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,454
Записей в блоге: 17
22.07.2012, 14:47     Передача параметра в потоки #4
Есть вариант не замарачиваться с передачей, а использовать синхронизацию например через критические секции.

Добавлено через 3 минуты
Infinity3000 это вопрос или ответ?
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
22.07.2012, 15:25     Передача параметра в потоки #5
Цитата Сообщение от Avazart Посмотреть сообщение
Infinity3000 это вопрос или ответ?
не понял! ну ответ наверно! с чего Вы взяли что вопрос?
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,454
Записей в блоге: 17
22.07.2012, 15:40     Передача параметра в потоки #6
Непонятных коментов
C++
1
2
[QUOTE]// вывожу в messag параметры, но выводятся 7 - 8 значные 
 //одинаковые числа[/QUOTE]
Infinity3000
22.07.2012, 15:47
  #7

Не по теме:

да я просто скопировал код исправил ошибки, и вставил назад. Впадлу было еще коменты убирать.:-)

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2012, 02:18     Передача параметра в потоки
Еще ссылки по теме:

Передача параметра в функцию - C++
Проблема заключается в следующем. Есть функция, вот её прототип. void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int...

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

Передача параметра предикату в find_if - C++
скажите, можно ли так сдалать: it - итератор it=find_if(it=stud.begin(),it!=stud.end(),function(name)) я хочу булевской функции...

Передача функции в роли параметра - C++
Привет всем. Помогите решить проблему по поводу передачи функции в виде параметра у нас два класса А и Б. у класса Б есть шаблонный...

Передача функции, как параметра - C++
у меня в алгоритме в некоторый момент ищется значение функции.этот алгоритм нужен для нескольких функций.можно ли передать в качестве...


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

Или воспользуйтесь поиском по форуму:
Eni87
Сообщений: n/a
23.07.2012, 02:18     Передача параметра в потоки #8
Всем спасибо, теперь все работает )
Yandex
Объявления
23.07.2012, 02:18     Передача параметра в потоки
Ответ Создать тему
Опции темы

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