超级版主
注册日期: 04-03
帖子: 18592
精华: 36
现金: 249466 标准币
资产: 1080358888 标准币
|
回复: 用Win32SDK并发线程的问题。。。。。。。。
线程的运行状态
1。线程正常情况下只有两种运行状态:running和exited。
2。如果想让线成退出,给线程状态位置THREAD_EXIT,如果线程已经退出,
则此标志位为THREAD_EXITED
3。如果线程已经运行,应该对标识位置THREAD_RUNNING
4。在线程运行过程中,应对线程标志位作出判断,如果为THREAD_EXIT,
应该修改标识位为THREAD_EXITED,然后return
5。如果一个现成还没有开始运行,则标志位为THREAD_NONE
****************************************************************/
const unsigned char THREAD_EXIT = 0;
const unsigned char THREAD_EXITED = 1;
const unsigned char THREAD_NONE = 2;
const unsigned char THREAD_RUNNING = 3;
const unsigned short THREAD_EXIT_LIMIT = 500; //等待线程退出的时间上限
const unsigned short THREAD_PERIOD = 20;
/****************************************************************
用户自己可以控制运行与中止的线程结构。
考虑到Scada程序中非常多的用到了多线程技术,就封装了线程处理方面的
数据和函数,让用户自己可以操作线程是否退出。
备注:如果一个程序退出的时候没有停止正在运行的线程,会产生内存泄漏!
使用参考:
THREAD m_thread; //定义一个线程
//定义线程所要处理的的函数,注意,此处不要有死循环,否则线成退出将失败
UINT ThreadProc(LPVOID lpParameter)
{
return TRUE;
}
//初始化线程
ThreadInit(&m_thread,ThreadProc,NULL,0,"线程使用示例");
//开启线程,线程开始后会一直运行,直到用户中止它!
ThreadBegin(&m_thread);
//退出线程
ThreadExit(&m_thread);
****************************************************************/
typedef struct tagTHREAD
{
char m_pszName[NAME_MAX_LEN];
UINT (*m_pfThreadProc)(LPVOID lpParameter);
LPVOID m_lpParameter;
UINT m_nThreadStatus;
HANDLE m_hThread;
UINT m_nExitTimeLimit;
}THREAD,*LPTHREAD;
__________________
借用达朗贝尔的名言:前进吧,你会得到信心!
[url="http://www.dimcax.com"]几何尺寸与公差标准[/url]
|