学习笔记: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即可。
*/
//////////////////////////////////////////////////////////////////////////
#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即可。
*/
//////////////////////////////////////////////////////////////////////////
相关文章推荐
- node.js在windows下的学习笔记(5)---用NODE.JS创建服务器和客户端
- UNIX环境编程学习笔记(26)——多线程编程(一):创建和终止线程
- Linux进程线程学习笔记:进程创建
- Windows编程 C++ DLL编程 学习笔记(一)静态链接库的创建和使用
- JavaSE--学习实战完全笔记--增强版的线程创建方式--实现Callable接口
- windows笔记-创建线程的另一个函数_beginthreadex
- Quartz.NET 2.0 学习笔记(5) :实例创建Windows服务实现任务调度
- Windows内核学习笔记(六)-- [总结]创建IRP的四种不同方式
- JAVA学习笔记(三十七)- 创建继承Thread的线程
- windows编程学习笔记(1)创建窗口与消息循环
- Java基础学习笔记(十)线程的创建总结
- 学习笔记2:java中Thread类与线程的创建
- UNIX环境编程学习笔记(26)——多线程编程(一):创建和终止线程
- Quartz.NET 2.0 学习笔记(5) :实例创建Windows服务实现任务调度
- .Net多线程程序设计学习笔记----创建托管线程和访问OS线程
- Windows编程学习笔记 lesson2 窗口创建
- Quartz.NET 2.0 学习笔记(5) :实例创建Windows服务实现任务调度 Quartz.NET 项目地址 http://quartznet.sourceforge.net/ Quar
- Linux进程线程学习笔记:进程创建
- windows笔记-创建线程的另一个函数_beginthreadex
- windows笔记-用哪个创建线程CreateThread还是_beginthread