多线程可以给程序实现许多的功能,并且多个函数同时进行有效地提高了程序的运行效率。这篇文章讲的就是VC控制台下的多线程操作。《VC+API常用函数简单例子大全》,作者
http://hi.baidu.com/3582077/home,
该书下载地址(点击这里)。
首先我们要用到CreateThread函数,以下是函数原型:
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
DWORD dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId
);
它有六个参数,
第一个参数不用管它,填
NULL
,第二个参数
dwStackSize
用于新线程的初始堆栈大小,默认为
0
,第三个
lpStartAddress
填函数名(指标),但这个函数必须是这种固定格式的
DWORD _stdcall ThreadProc(LPVOID lpParameter),
新的线程将会执行这个函数里面的代码,直到函数结束,线程退出。第四个
lpParameter
是一自定义参数,用户可以通过这个参数,传递需要的类型,这个参数与线程函数的参数相对应。第五个
dwCreationFlags
填
0
表示立即执行,如果是
CREATE_SUSPENDED
表示挂起,直到用
ResumeThread
函数唤醒。第六个
lpThreadId
填
NULL
就行了。
例子:
#include <stdio.h>
#include <windows.h>
DWORD _stdcall ThreadProc(LPVOID lpParameter)//线程执行函数
{
int si=100;
while(si>0)
{
printf("子线程输出数字:%d\n",si--);
Sleep(1000);
}
return 0;
}
int main()
{
int mi=0;
CreateThread(NULL,0,ThreadProc,NULL,0,NULL);//创建一个线程,去执行ThreadProc函数
while(mi<100)
{
printf("主线程输出数字:%d\n",mi++);
Sleep(1000);
}
return 0;
}