#include <stdio.h>
#include <windows.h>
DWORD WINAPI ThreadFunc (LPVOID);
int main ()
{
std::ios::sync_with_stdio(false);
HANDLE hThrd = NULL;
DWORD threadId = 0;
//无法预测结果, 执行次序无法保证
//因为 task switch 随时可能发生
for (int i = 0; i < 5; ++i)
{
/*
//传回两个值, 第一个值是 HANDLE, 这也是它的返回值, 跟线程有关的 API 都与它有关
HANDLE CreateTHread(
LPSECURITY_ATTUIBUTES
ipThreadAttributes, //新线程的安全属性(NULL 意为默认)
DWORD dwStackSize, //新线程默认的堆栈大小
LPTHREAD_START_ROUTINE
ipStartAddress, //新线程的起始地址, 存放一个指针
LPVOID ipParameter, //此值将被传入新线程中, 作为参数
DWORD dwCreatinFlags, //允许产生一个暂时挂起的线程, 默认是立即开始执行
LPDWORD ipThreadId //新线程的 id, 是一个全局变量, 可以独一无二的表示系统任意进程的某个线程
);
*/
//新线程
hThrd = CreateThread (NULL,
0,
ThreadFunc,
(LPVOID) i,
0,
&threadId);
//主线程
if (hThrd)
{
printf ("Thread launched %d \n", i);
}
}
//等待线程 hThrd, 防止它提前结束
Sleep (2000);
return EXIT_SUCCESS;
}
DWORD WINAPI ThreadFunc (LPVOID n)
{
for (int i = 0; i < 10; ++i) {
printf ("%d%d%d%d%d%d%d%d\n", n, n, n, n, n, n, n, n);
}
return 0;
}