С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Thread class - C++

03.02.2013, 21:30. Просмотров 558. Ответов 1
Метки нет (Все метки)

В библиотеке SDL есть функция:
C++
1
SDL_Thread *SDL_CreateThread(int (*fn)(void *), void *data);
Эта функция запускает в отдельном потоке переданную ей функцию, и возвращает указатель на поток. Но не суть. А суть в том, что я хочу обернуть это дело в класс Thread, например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class MyClass : public Thread
{
private:
    virtual void run()
    {
        //тут то, что должно быть запущено в отдельном потоке 
    }
};
 
...
 
MyClass mc;
mc.start();
ну думаю понятно, такая схема чуть ли ни везде используется
Собственно вопрос как это реализовать. Сам пытался, гуглил, но не понял как передать в библиотечную функцию указатель на метод класса конкретного объекта изнутри О_о.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2013, 21:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Thread class (C++):

Разъясните код пжлст(выдает ошибку:cannot convert from 'class std::list<class c_bullet *,class std::allocator<class c_bullet *> >::iterator' to 'int') - C++
Есть такие строки: std::list&lt;c_bullet*&gt; Bullets; ... for(auto i = Bullets.begin(); i != Bullets.end(); /**/) В строке цикла вот...

Ошибка компиляции "no instance of constructor 'std::thread::thread' matches the argument list" - C++
Не могу сообразить почему возникает ошибка. У меня в классе есть метод, который должен работать в нескольких потоках одновременно. Вот он: ...

Boost::thread vs std::thread - C++
Доброго времени суток, решил углубить свои знания, и решил почитать про потоки, бустовые и те что в 11 стандарте приняли, с бустом все ясно...

C++11. thread, mutex, thread-safety - C++
есть функция, которая стартует 2 потока: для отлова нажатия клавиш и для выполнения действий void Trainer::start() { const HANDLE...

Работа с class ами. Заполнение дин. массива типа class - C++
Всем доброго времени суток! Это моя первая тема на этом сайте, поэтому если что извините меня (за неточности итд итп). Мне нужно...

Нужно объект типа класс проинициализировать с помощью перегруженного конструктора Class::Class( bool a ) - C++
Плиз помогите. Не знал, что я такой чайник.) Итак: есть два класса: CMyClass.h CMyClass.cpp и

1
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
03.02.2013, 23:42 #2
Как вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class MyClass : public Thread
{
  SDL_Thread* m_thread;
public:
   void start()
   {
      m_thread = SDL_CreateThread(&MyClass::execute, this);
   }
 
private:
    virtual void run()
    {
        // тут то, что должно быть запущено в отдельном потоке 
        // точнее будет, если говорить что то, что тут выполняется - выполняется в другом потоке.
    }
 
    static int execute(void* instance)
    {
       MyClass* myClass = static_cast<MyClass*>(instance);
       myClass->run();
       return 0;
    }
};
Но это просто возможность выполнять код в виртуальных функциях в отдельном потоке.
В классе конечно же нужно делать правильный деструктор, запретить копирование, проверки всякие и прочие нужные вещи сделать.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2013, 23:42
Привет! Вот еще темы с ответами:

Create a programm that creates an object of created class Time and tests the member functions of class - C++
Time Class Create a class called Time that might be used to represent time. 1. Your class should include three data...

enum и class как составляющие другого class - C++
Как организовать ввод enuma с клавиатуры (51-я строка)? Как прикрепить класс date к employee в private? :wall: #include &lt;iostream&gt; ...

vector<[class]> in class и перегрузка (ostream) - C++
Доброе всем время суток ) столкнулся с проблемой Есть у меня несколько классов и есть класс внутри которого созданы векторы хранящие...

Объяснить причины ошибки "Extra qualification 'CLASS CONSTRUCTOR' and 'CLASS' has incomplete type" - C++
Согласно синтаксису, вроде все правильно, но ошибка... что не так? Ошибки компилятора ниже на рисунке... #include &lt;iostream&gt; ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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