多线程之互斥对象

引言:

多线程有什么用?因为主线程一个人忙不过来,所以便有个多线程的概念,可以帮着一起干活。当然下面这个例子体现不出来,因为它没有任何实际的用处,只是作为一个简单的例子以便初学者容易理解。

 

代码1:

  
  
  
  
  1. #include <windows.h>  
  2. #include <iostream.h>  
  3.  
  4. //线程入口函数的声明  
  5. DWORD WINAPI Func1Proc(LPVOID lpParameter);  
  6.  
  7. //主线程  
  8. int main()  
  9. {  
  10.     HANDLE hThread1;  
  11.     hThread1=CreateThread(NULL,0,Func1Proc,NULL,0,NULL);  //ThreadAttributes,StartAddress,ThreadParameter,CreationFlag,ThreadID  
  12.     CloseHandle(hThread1);  
  13.       
  14.     cout<<"main thread is running."<<endl;  
  15.     Sleep(10);  
  16.       
  17.     return 0;  
  18. }  
  19.  
  20. //线程1的入口函数  
  21. DWORD WINAPI Func1Proc(LPVOID lpParameter)  
  22. {  
  23.     cout<<"thread1 is running!"<<endl;  
  24.       
  25.     return 0;  

该程序需要注意的是,创建线程(CreateThread)这个函数的参数,解释如下:

WINBASEAPI
HANDLE
WINAPI
CreateThread(
    LPSECURITY_ATTRIBUTES lpThreadAttributes,   //当为NULL时,表示默认的安全属性
    DWORD dwStackSize,                                             //为0(?)
    LPTHREAD_START_ROUTINE lpStartAddress,    //子线程函数的入口地址
    LPVOID lpParameter,                                               //子线程参数
    DWORD dwCreationFlags,                                       //当为0时,表示线程被创建后立即运行
    LPDWORD lpThreadId                                            //线程ID
    );

 

函数Sleep()的作用是使主线程睡眠,于是,子线程代码就可以得到执行;否则,主线程执行输出语句之后,立即返回,程序退出,那么子线程在执行之前已被销毁。程序运行后结果:

 

问题

在多线程程序里,把#include <iostream.h>换成

#include <iostream>

using namespace std;就会出现下面这种结果,我不知道为什么?

 

你可能感兴趣的:(多线程,职场,初学者,休闲)