2013-05-31 2 views
0
#ifndef FFMPEG_THREAD_H 
#define FFMPEG_THREAD_H 

#include <pthread.h> 

class Thread 
{ 
public: 
    Thread(); 
    ~Thread(); 

    void      start(); 
    void      startAsync(); 
    int       wait(); 

    void      waitOnNotify(); 
    void      notify(); 
    virtual void    stop(); 

protected: 
    bool      mRunning; 

    virtual void    handleRun(void* ptr); 

private: 
    pthread_t     mThread; 
    pthread_mutex_t    mLock; 
    pthread_cond_t    mCondition; 

    static void*    startThread(void* ptr); 
}; 

#endif //FFMPEG_DECODER_H 



void* Thread::startThread(void* ptr) 
{ 

    Thread* thread = (Thread *) ptr; 
    thread->mRunning = true; 
    thread->handleRun(ptr); 
    thread->mRunning = false; 

} 

void Thread::handleRun(void* ptr) 
{ 
} 

В этом фрагменте кода thread.cpp. Внутри объекта потока он запускает запуск и имеет функцию HandleRun, но он пуст. Какова цель пустой функции HandleRun? Он ничего не делает.пустая функция для handleRun thread.cpp

+3

Действительно ли 'Thread' предназначен для подклассификации с' handleRun', который является 'virtual'? Btw, retagging, так как это похоже на C++, а не C. – simonc

+0

, так что у handleRun по умолчанию есть вещи внутри, а вышеприведенный фрагмент подклассифицирует его? – lilzz

+0

В обратном порядке. Я предполагаю, что вы показали нам по умолчанию 'handleRun' и что намерение заключается в том, что подклассы переопределяют это. Если вы опубликуете определение класса для 'Thread' (его заголовок), мы можем сказать наверняка. – simonc

ответ

1

Вы не указали достаточно кода, чтобы дать окончательный ответ. Предполагалось, что Thread может быть базовым классом с handleRun, являющимся virtual.

Классы, полученные из Thread, предположительно автоматически будут иметь выделенный поток, созданный с помощью handleRun, действующего в качестве точки входа.

+0

Да, вы правы, функция handleRun является виртуальной. – lilzz

Смежные вопросы