Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Функции в потоке


Автор: Gucci 20.10.2006, 20:38
Как передать в поток больше чем одну функцию?

Автор: Daevaorn 20.10.2006, 20:49
Gucci, 
Если идет речь о параллельном программировании, то смысла передавать в "поток" несколько функций нет. Ведь тебе же хватает одной int main() в программеsmile

Автор: Gucci 20.10.2006, 21:07
Цитата(Daevaorn @ 20.10.2006,  20:49)
Gucci, 
Если идет речь о параллельном программировании, то смысла передавать в "поток" несколько функций нет. Ведь тебе же хватает одной int main() в программеsmile

Мне нужно создать дочерний поток главного потока с помощью функции :

HANDLE CreateThread (
  LPSECURITY_ATTRIBUTES lpThreadAttributes, //атрибуты защиты
  DWORD dwStackSize,                        //размер стека
  LPTHREAD_START_ROUTINE lpStartAddress,    //функция потока
  LPVOID lpThreadParameter,   //параметр функции потока
  DWORD dwCreationFlags,      //параметр запуска потока
  LPDWORD lpThreadID);        //идентификатор потока


Как передать параметру lpStartAddress указатель на две функции?

Автор: Daevaorn 20.10.2006, 21:09
Цитата(Gucci @  20.10.2006,  22:07 Найти цитируемый пост)
Как передать параметру lpStartAddress указатель на две функции? 

зачем?

Автор: Gucci 20.10.2006, 21:19
Чтобы когда поток запустился эти 2 функции тоже запустились!

Автор: Daevaorn 20.10.2006, 21:21
Цитата(Gucci @  20.10.2006,  22:19 Найти цитируемый пост)
Чтобы когда поток запустился эти 2 функции тоже запустились! 

Мдя. Проблема векаsmile

Код

void foo1()
{
   //...
}

void foo2()
{
   //...
}

void fakeFoo() // то что тебе нужно! Её и передавай в поток.
{
   foo1();
   foo2();
}

Автор: Gucci 20.10.2006, 21:25
Точно, спасибо, щас попробую...
Правда того ли хочет препод!? =)

Добавлено @ 21:38 
Так все таки , можно ли передать в эту функцию в качестве параметра указатель на массив из 2-х функций?
Если да, то можно алгоритм плз?

Автор: phprus 21.10.2006, 10:23
Gucci,
Может тебе надо запустить эти 2 функции параллельно в 2 потока? Если да то используй 2 вызова CreateThread в каждом из которых в качестве параметра указывай соответствующую функцию.

Автор: Gucci 24.10.2006, 20:15
Цитата(phprus @ 21.10.2006,  10:23)
Gucci,
Может тебе надо запустить эти 2 функции параллельно в 2 потока? Если да то используй 2 вызова CreateThread в каждом из которых в качестве параметра указывай соответствующую функцию.

Нет, нужно чтобы дочерний поток был только один....

Автор: JackYF 24.10.2006, 21:09
Каждый поток запускается одной функцией.
Она же, в качестве параметров может принимать что угодно( в пределах 4 байт ), в том числе и массив указателей на функции.

А две функции сразу в одном потоке в принципе существовать не могут, как и говорилось раньше...

Автор: Gucci 26.10.2006, 23:03
Цитата(JackYF @ 24.10.2006,  21:09)
Каждый поток запускается одной функцией.
Она же, в качестве параметров может принимать что угодно( в пределах 4 байт ), в том числе и массив указателей на функции.

А две функции сразу в одном потоке в принципе существовать не могут, как и говорилось раньше...

Ясно, спасибо...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)