您的位置:首页 > 编程语言 > C语言/C++

学习笔记:windows下,用c语言来创建线程

2007-01-03 12:44 816 查看
#include <stdio.h>
#include <windows.h>

typedef void * HANDLE;
#define SEMAPHORE HANDLE
#define THREADHANDLE HANDLE
#define THREADPROCESS DWORD WINAPI
#define THREADRETURN 0
#define PTHREADPROCESS LPTHREAD_START_ROUTINE
#define NULLTHREAD NULL

int g_thread_end = 0;

THREADHANDLE os_creatthread(PTHREADPROCESS fun,void *para)
{
unsigned long id;
return CreateThread(NULL,0,fun,para,0,&id);
}
void waitforthread()
{
while (g_thread_end == 0)
{
NULL;
}
}
THREADPROCESS threadfun(PVOID arg)
{
int i;
for(i=0; i < 0xfffffff; i++)
{
NULL;
}
g_thread_end = 1;
return 0;
}

void main()
{
THREADHANDLE pthread = NULLTHREAD;

printf("Creating thread.../n");
pthread = os_creatthread(threadfun,NULL);
printf("Creating thread completed.Handle:%x/n",pthread);

printf("Waiting for thread.../n");
waitforthread();
printf("Waiting ended./n");
}
//////////////////////////////////////////////////////////////////////////
/*在Windows下面,用CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,
DWORD dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreateionFlags,
LPDWORD lpThreadId)
函数可以创建一个线程,第一个参数指线程的安全属性的设定,第二个参数表示线程堆栈的大小,第三个参数表示线程函数名称,第四个参数线程执行的参数,第五个参数指线程的优先级,最后一个参数指向线程的ID。关于windows下用C创建多线程可以查查MSDN即可。
*/
//////////////////////////////////////////////////////////////////////////
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息