#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即可。
*/
//////////////////////////////////////////////////////////////////////////
本文通过示例代码展示了如何在Windows环境下使用C语言创建线程,包括`CreateThread`函数的使用方法,以及线程同步的基本操作。在main函数中调用`os_creatthread`创建线程,并通过`waitforthread`等待线程结束。

190

被折叠的 条评论
为什么被折叠?



