多线程编程——线程的创建

创建线程有两个函数可以使用:
1、_beginthreadex()
2、CreateThread()

说明:
1、前者是Mulit-Threads C Runtime库中的函数,后者是Windows API 库中的函数。
2、前者是对后者的封装。
3、前者使得每个线程都将拥有自己专用的一块内存区域来供标准C运行库中所有有需要的函数使用。
4、如果线程中调用了C Run Time Library 中的函数,那么必须使用前者。即:如果在除主线程之外的任何线程中进行以下操作,你就应该使用多线程版本的C runtime library,并使用_beginthreadex()和 _endthreadex():
(1)、使用malloc()和free(),或是new和delete;
(2)、使用stdio.h或io.h里面声明的任何函数;
(3)、使用浮点变量或浮点运算函数;

(4)、调用任何一个使用了静态缓冲区的runtime函数,比如:asctime(),strtok()或rand()。

方法一:使用_beginthreadex()函数创建。

#include <stdio.h>
#include <stdlib.h>
#include <process.h>
#include <Windows.h>

unsigned _stdcall ThreadProc(void* param)
{
	while (1)
	{
	    //do something.
	}
	return 0;
}

int main()
{
    HANDLE h = (HANDLE)_beginthreadex(NULL, 0, ThreadProc, NULL, NULL, NULL);
    WaitForSingleObject(h, INFINITE);
    CloseHandle(h);
    
    return 0;
}
方法二:使用CreateThread()函数创建

#include <stdio.h>
#include <stdlib.h>
#include <process.h>
#include <Windows.h>

DWORD WINAPI ThreadProc(LPVOID lparam)
{
	while (1)
	{
	    //do something.
	}
	return 0;
}

int main()
{
    HANDLE h = CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL);
    WaitForSingleObject(h, INFINITE);
    CloseHandle(h);
    
    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值