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

подскажите как выполнить метод в потоке - C++

Восстановить пароль Регистрация
 
a_etot_nik
8 / 8 / 1
Регистрация: 09.04.2010
Сообщений: 58
13.11.2011, 14:15     подскажите как выполнить метод в потоке #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  class T1
    {
        public : 
            void metod1();
            void metod2();
     }
 void T1::metod1()
  {
    std::cout<<"metod1"<<endl;
    // пожскажите пожайлуста как в этом методе запустить metod2 в отдельном потоке
  }
 void T1::metod2()
  {
    std::cout<<"metod2"<<endl;
  }
Добавлено через 25 минут
Хотябы простой пример реализации.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2011, 14:15     подскажите как выполнить метод в потоке
Посмотрите здесь:

Как избавится от слов во входном потоке? C++
C++ Как узнать есть ли сволы во входном потоке?
Как открыть файл в потоке ifstream? C++
Метод Ньютона подскажите C++
Подскажите пожалуйста как выполнить с использованием матрицы и сделать программу C++
C++ Не могу создать поток( Нужно чтобы функция запускается в потоке и работала там пока не закроем в потоке)
C++ Как правильно переместить позицию в потоке?
Как заставить функцию выполняться в потоке C++
C++ Как задать скорость обработки операций в потоке std::thread?
Как создать объект класса в потоке? C++
C++ Подскажите метод, как вызывать get<n>(func)(x) n раз. Код внутри
C++ Выполнить метод в заданном потоке

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1599 / 1227 / 121
Регистрация: 21.12.2010
Сообщений: 1,875
Записей в блоге: 7
13.11.2011, 16:46     подскажите как выполнить метод в потоке #2
сделать method2 статическим
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <windows.h>
#include <process.h>
 
class T1
{
public:
   void method1();
   void method3();
   static void method2(void*);
};
 
void T1::method1()
{
   std::cout << "method1" << std::endl;
   HANDLE hThread = (HANDLE)_beginthread(T1::method2, 0, (void*)this);
   WaitForSingleObject(hThread, INFINITE);
}
void T1::method2(void* par)
{
   T1* p = (T1*)par;
   std::cout<<"method2"<< std::endl;
   p->method3();
 
}
void T1::method3()
{
   std::cout << "method3\n";
}
 
int main()
{
   T1 o;
   o.method1();
   return 0;
}
a_etot_nik
8 / 8 / 1
Регистрация: 09.04.2010
Сообщений: 58
13.11.2011, 16:57  [ТС]     подскажите как выполнить метод в потоке #3
Если metod2 сделать static то будет недоступен this.
Решил проблему так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
   class T1
{
public:
   DWORD WINAPI metod1(PVOID pvContext);
   friend DWORD WINAPI _tInnerThread(PVOID pvContext);
   void method2();
};
DWORD WINAPI _tInnerThread(PVOID pvContext) 
 { 
    T1 * pClass = static_cast<T1*>(pvContext); 
    return(pClass->metod1(pvContext)); 
 }
 
void T1:: metod2()
{
   DWORD ThreadId;  
   HANDLE hThread = CreateThread(NULL,0,_tInnerThread,this,0,&ThreadId);
}
Yandex
Объявления
13.11.2011, 16:57     подскажите как выполнить метод в потоке
Ответ Создать тему
Опции темы

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