Создание потока внутри класса
От: EvgenyS Украина  
Дата: 04.07.05 07:08
Оценка:
Доброго времени суток!
Не могли бы вы помочь в следующем вопросе:
Есть класс, в классе объявлена функция public: void ThreadFunc().
При создании потока с помощью функции pthread_create(...), третьим параметром является указатель на функцию с которой начинает выполняться поток, так вот вопрос заключается в том, возможно ли в качестве этой ссылочной функции использовать функцию класса, если да то как именно на нее нужно ссылаться, если нет то какие могут быть варианты решения этого вопроса?!
Заранее благодарен!!!
Re: Создание потока внутри класса
От: _DAle_ Беларусь  
Дата: 04.07.05 07:11
Оценка:
Здравствуйте, EvgenyS, Вы писали:

ES>Доброго времени суток!

ES>Не могли бы вы помочь в следующем вопросе:
ES>Есть класс, в классе объявлена функция public: void ThreadFunc().
ES>При создании потока с помощью функции pthread_create(...), третьим параметром является указатель на функцию с которой начинает выполняться поток, так вот вопрос заключается в том, возможно ли в качестве этой ссылочной функции использовать функцию класса, если да то как именно на нее нужно ссылаться, если нет то какие могут быть варианты решения этого вопроса?!
ES>Заранее благодарен!!!

http://www.rsdn.ru/Forum/Info.aspx?name=FAQ.cpp.threadandmember
Автор: MaximE
Дата: 08.08.04
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re: Создание потока внутри класса
От: LuciferMoscow Россия  
Дата: 04.07.05 07:13
Оценка:
Здравствуйте, EvgenyS, Вы писали:

ES>возможно ли в качестве этой ссылочной функции использовать функцию класса, если да то как именно на нее нужно ссылаться, если нет то какие могут быть варианты решения этого вопроса?!

Функцию класса использовать нельзя. Причина: функция потока должна иметь такой прототип
DWORD WINAPI ThreadProc(LPVOID lpParameter).

Метод решения:
class A
{
 static DWORD WINAPI ThreadProc(LPVOID lpParameter);
 DWORD ThreadFuncEx();
}

DWORD A::ThreadProc(LPVOID lpParameter)
{
  A* pA=(A*)lpParameter;
  return pA->ThreadFuncEx();
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.