我这个经验去写多线程编程函数的例子,实在有点太低级,_beginthreadex 虽然足以支持多线程,但是使用的时候传一堆没用的参数,每次使用就得查msdn,把参数给搞全,现在讲究效率的时候,每次都需要把参数补全,是不是太繁琐,为了提高效率,我就封装了这个类,供大伙使用
class api_Thread_lu
{
begin_Thread(unsigned int (*pFunc)(void *),void *Param) {
//核心的一个数据结构 包含一个用户数据指针和一个线程函数地址 INFO_THREAD *lpInfoThread = NULL; lpInfoThread = new struct INFO_THREAD;
lpInfoThread->pUserDate = Param;
//用户自己定义的线程函数就放在这里了,通过调用beginthreadex 来启动 lpInfoThread->pThreadFunc = pFunc;
_beginthreadex(NULL,0,ThreadFunc,lpInfoThread,0,&luThreadID);
unsigned int luThreadID = 0;//标记线程ID 用不用都行 return TRUE;
}
void *ThreadFunc(void * lpParam) { INFO_THREAD *lpThreadInfo = (INFO_THREAD *)lpParam;
//用户自定义的函数被执行的地方,线程执行完毕之后,pThreadFunc才返回 返回后退出该函数
lpThreadInfo->pThreadFunc(lpThreadInfo->pUserDate);
if (lpThreadInfo != NULL) { delete lpThreadInfo;// lpThreadInfo = NULL; } _endthreadex(0); return 1; }
}
使用的时候比windows的函数使用方便多了,这样简单的两行调用线程就可以跟啰里啰唆的传统很多行代码可以搞定的问题
api_Thread_lu loThread; loThread.begin_Thread(testFunc, this);//testFunc就是你自己定义的线程入口函数
好了这两行 就可以建线程了 是不是比用widows那一套建立方便多了哪,好用的点赞