如题
解决方案 »
- visual c++ runtime library
- 从CControlBar继承后自绘,如何去掉边框
- 做一个vc开发的调查(希望不是tooooooooold^_^)
- 请大家帮着出出主意:小弟是vc新手,现在我要做一个车辆行使的模拟软件,有什么好的技术,方法,具体用什么控件,请大家多多指教,多提意
- 怎样保存从一个表中选出的数据?
- 到底是怎么回事?
- 求关于在VC++中用CRecordset派生类执行Select Max(num) into myvar from person语句的方法
- 怎样创建文件夹路径
- VC 操作word写入页脚时,Fields::Add函数的参数不知如何设置
- 在线程函数中调用::PostMessage()函数时,该函数中的第一个参数如何取得?
- 弱问:如何用AfxMessageBox()输出一个int变量的值!
- 我的线程为什么不停止了?
/* */
/************************************************************************/
#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
求高手能给出一个类代码来~!