创建简单线程

 创建简单线程

本例中创建三个子线程,main函数本身是主线程,主线程结束,子线程就跟着中止。

创建简单线程_第1张图片

程序如下:

 

#include  < stdio.h >
#include 
< windows.h >

static   int  count1,count2,count3;

DWORD WINAPI The_One(LPVOID no)
{    
    
int i;
    
for(i=0;i<5;i++)
    
{
    printf(
"I'm 1  /n");
    count1
++;
    Sleep(
100);//控制快慢,执行速度中
    
    }

    
return 0;
}


DWORD WINAPI The_Two(LPVOID no)
{   
    
int i;
    
for(i=0;i<5;i++)
    
{printf("I'm 2   /n");
    count2
++;
    Sleep(
10);//控制快慢,执行速度快
    
    }
    
    
return 0;
}


DWORD WINAPI The_Three(LPVOID no)
{    
    
int i;
    
for(i=0;i<5;i++)
    
{printf("I'm 3   /n");
    count3
++;
    Sleep(
800);//控制快慢,执行速度慢
    
    }
     
    
return 0;
}

int  main()
{
    HANDLE   thread[
3];//建立三个线句柄(空指针)
    DWORD    thread1id,thread2id,thread3id;

    
    thread[
0]=CreateThread(NULL,0,The_One,NULL,0,&thread1id);//子线程一
    if(thread[0]==NULL)
    
{
        printf(
"CreateThread for The_One Error: %d   /n",GetLastError());
        
return -1;
    }

    
    
    thread[
1]=CreateThread(NULL,0,The_Two,NULL,0,&thread2id);//子线程二
    if(thread[1]==NULL)
    
{
        printf(
"CreateThread for The_Two Error: %d   /n",GetLastError());
        
return -1;
    }


    thread[
2]=CreateThread(NULL,0,The_Three,NULL,0,&thread3id);//子线程三
    if(thread[2]==NULL)
    
{
        printf(
"CreateThread for The_Three Error: %d   /n",GetLastError());
        
return -1;
    }

   
    
//等待线程,0改成1或2看看效果
    WaitForSingleObject(thread[1],INFINITE);
      
    CloseHandle(thread[
0]);//关闭线程
    CloseHandle(thread[1]);
    CloseHandle(thread[
2]);
    
    printf(
"Thread1 count=%d/5  /n",count1);
    printf(
"Thread2 count=%d/5  /n",count2);
    printf(
"Thread3 count=%d/5  /n",count3);
    
return 0;
}

你可能感兴趣的:(创建简单线程)