如题

解决方案 »

  1.   

    ?? MFC版? 不是C++啊?
      

  2.   

    /************************************************************************/
    /*                                                                      */
    /************************************************************************/
    #ifndef _THREAD_H_
    #define _THREAD_H_#include <everest/everest.h>
    #include "./parallel.h"
    #include "./types.h"#include <string>
    #include <map>
    using namespace std;_EVEREST_BEGIN_
    class Thread;
    class Event;typedef map<DWORD, Thread*> threadmap_t;
    typedef map<DWORD, Thread*>::iterator threadmap_iter_t;enum THREAD_STATE
    {
    THREAD_SUSPEND = 0,
    THREAD_RUNNING = 1,
    THREAD_EXITING = 2,
    THREAD_WAITING = 3, //from thread pool THREAD_BEFORE_RUN = 3,
    THREAD_AFTER_RUN = 4,
    THREAD_UNKNOWN = 0xff
    };
    enum THREAD_PRIORITY
    {
    THREAD_MAX_PRIORITY = 0,
    THREAD_MIN_PRIORITY = 1,
    THREAD_NORMAL_PRIORITY = 2
    };
    enum THREAD_FLAG
    {
    THREAD_FROM_USER = 0,
    THREAD_FROM_POOL = 1, THREAD_POOL_RUNNING = 2
    };class thread_pool_create
    {
    };class Thread : public Runnable
    {
    public:
    enum { lifecycle_type = THREAD_LIFECYCLE }; explicit Thread(long);
    Thread(void);
    Thread(const char*);
    Thread(Runnable* pRunnable);
    Thread(thread_pool_create); virtual ~Thread(void);public:
    virtual void run(void);
    virtual void beginning(void);
    virtual void exiting(void);
    virtual bool waiting(void);private:
    void __run(void);
    void __running(void);
    static unsigned long ThreadProc(void*);
    THREAD_T _create_thread(const char*); inline void __set_state(THREAD_STATE ts)
    {
    m_state = ts;
    } inline void __add_flag(long _flag_)
    {
    m_flag |= _flag_;
    } inline long __has_flag(long _flag_ = 0)
    {
    return long(_flag_ & m_flag);
    }
    bool __if_wait_then_set();

    //////////////////////////////////////////////////////////////////////////
    //members
    private:
    string m_name;
    Runnable* m_pRunnable; Event* m_pEvent; THREAD_T m_hThread;
    THREAD_ID m_dwThreadID; volatile long m_flag;

    THREAD_PRIORITY m_priority;
    THREAD_STATE m_state; static threadmap_t s_ThreadMap;public:
    static void sleep(long millisec);
    static Thread* currentThread(void); void start(void);
    void stop(void);
    void destroy(void);
    void exit(void);
    void join(long millisec = 0);
    void attach(Runnable* pRunnable); string getName(void);
    void setName(const char* name);
    int getPriority(void);
    void setPriority(THREAD_PRIORITY _priority); THREAD_STATE getState();};
    _EVEREST_END_
    #endif
      

  3.   

    偶也希望能有一个VC的 SDK版的多线程类代码~!偶自己写了一个简单的类,可是总感觉不够专业,而且运行起来好像不是很好。耗费资源比较多~!
    求高手能给出一个类代码来~!