随便写个 线程类 玩玩

随便写个 线程类 玩玩
#ifndef _BT_THREAD_H
#define _BT_THREAD_H

#include <windows.h>

class btworkThread{
public:
    btworkThread( void(*entry)(btworkThread* ,void*),void* user){        
        _entry = entry;        
        _param = user;
        _thandle = CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)btworkThread::run,user,NULL,&_tid);
    }
    void    stop(){
        _loop = false;
    }
    void    wait(){
        while(!_end){
            Sleep(20);
        }
        Sleep(20);  // ensure that thread has terminated
    }
    void    stopAndWait(){
        stop();wait();
    }
    bool    loop(){
        return _loop;
    }
    void    code_begin(){
        _loop = true; _begin = true;_end=false;
    }
    void    code_end(){
        _loop = false; _begin = false;_end=true;
        CloseHandle(_thandle);
    }
protected:
    static void    run(btworkThread* thread){
        thread->_entry(thread,thread->_param);
    }
private:
    volatile bool    _loop,_begin,_end;
    void (*_entry)(btworkThread* ,void*);
    void*    _param;
    DWORD    _tid;
    HANDLE    _thandle;
};

你可能感兴趣的:(随便写个 线程类 玩玩)