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

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

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

Thread class - C++

03.02.2013, 21:30. Просмотров 542. Ответов 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();
ну думаю понятно, такая схема чуть ли ни везде используется
Собственно вопрос как это реализовать. Сам пытался, гуглил, но не понял как передать в библиотечную функцию указатель на метод класса конкретного объекта изнутри О_о.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2013, 21:30     Thread class
Посмотрите здесь:

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

public class && static class - C++
Вообщем у меня небольшая связка, которую я хотел бы использовать в программе своей, но компилятор мне выдает ошибку и я не знаю что все...

Thread - C++
Доброго времени суток господа! Вопрос в коде в комментариях. #include <iostream> #include <thread> enum { DELAY = 5 }; bool...

Thread в объекте - C++
Добрый вечер, вопрос следующий: Создать класс, реализующий функционал создания/остановки нити исполнения, ошибка: cannot convert...

библиотека thread - C++
компилятор не видит эту библиотеку что делать?

thread-safe ли? - C++
Насколько я понимаю, для х32 процессоров атомарными операциями не являются те, что с double/long long, для х64 же и они атомарны. Если я...

Добавление thread в вектор - C++
Здравствуйте. Прошу помощи. Выполняю задание, но возникает ошибка при добавлении thread в vector, причем, если просматривать через...

Массив потоков <thread> - C++
Последний раз потоки писал на C под Linux. И там прокатывала такая штука thread a; for(int i=0;i&lt;n;i++) a_create(тряляля); for(int...

Std::thread::detach() - C++
Что произойдет, если main - поток завершится раньше чем child.detach()? Добавлено через 3 минуты У меня программа просто завершилась...

C++11 thread производитель-потребитель - C++
Реализовал схему производитель-потребитель. Есть класс генератора последовательных целых чисел, ограниченных максимальным занчением, на...

Vector и thread-safe - C++
Как лучше сделать свой класс типа контейнер шаблонный как вектор который будет ещё и thread-safe. Допустим есть обычный класс внутри вектор...

Указатели и std::thread - C++
Всем здрасьте ! Возникла проблема в понимании ... Возможно я написал не в ту тему, но думаю тут есть эксперты. У меня есть класс...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
03.02.2013, 23:42     Thread class #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;
    }
};
Но это просто возможность выполнять код в виртуальных функциях в отдельном потоке.
В классе конечно же нужно делать правильный деструктор, запретить копирование, проверки всякие и прочие нужные вещи сделать.
Ответ Создать тему
Опции темы

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