zoukankan      html  css  js  c++  java
  • 在VC下使用多线程的使用详解

       昨天看了一下多线程,以后还是将一些代码发到博客上比较好。现在电脑上以前写的代码都没有打开看一眼的欲望了。还是发到博客好,可以随时看看,而且也能帮助一下别人。呵呵

              最主要就是学习了一下CreateThread函数以及这次彻底看了一下LPVOID类型,原来这个类型指的是空指针啊,以前很汗啊。

    下面就上代码:

    // MutiThread.cpp : Defines the entry point for the console application.
    //

    /*

            file:MutiThread.cpp

            author:www.5dkx.com

    */

    #include "stdafx.h"
    #include "windows.h"
    #include "stdio.h"
    #include "iostream"
    /*这个头文件必须加啊,要不然的话WINAPI就无法识别*/
    using namespace std;
    static int tickets=50;
    DWORD WINAPI SHOP1(LPVOID lpParameter);
    DWORD WINAPI SHOP2(LPVOID lpParameter);
    /*WINAPI其实和CALLBACK是一个类型,都是定义一个指针函数*/
    /*LPVOID就是一个万金油类型 原型为void *是一个空指针,可以传递任何类型参数*/

    int main(int argc, char* argv[])

     HANDLE Thread1 = CreateThread(
      NULL,//*被继承的线程是否可以得到该线程句柄【我的理解:返回值为NULL意思就是返回句柄NLL自然就无法继承】*/
      0,//*创建线程占用内存空间,=0表示由windows自动分配*/
      SHOP1,//*调用函数,其实就是个回调函数*/  
      NULL,//*传递的参数,这里没有传递参数,如果传递的话则SHOP1函数可以使用*/  
      0,//*进程创建的时候状态,为0表示直接运行,不挂起*/  
      NULL);
      /*创建线程时是否创建ID*/
     HANDLE Thread2 = CreateThread(NULL,0,SHOP2,NULL,0,NULL); 

     _sleep(1000);
     CloseHandle(Thread1);
     CloseHandle(Thread2);
     return 0;
    }

    DWORD WINAPI SHOP1(LPVOID lpParameter)
    {
     while(1)
     {/*死循环,也可以用for(;;)*/
      if(tickets>0)//有票
      {
       tickets--;
       printf("SHOP1售出一张飞机票,还剩下 %d 张飞机票\n",tickets);
      }
      else
      {
       printf("售票告罄……\n");
       return 0;
       /*也可以break*/
      }
     }
     return 0;
    }

    DWORD WINAPI SHOP2(LPVOID lpParameter)
    {
     while(1)
     {/*死循环,也可以用for(;;)*/
      if(tickets>0)//有票
      {
       tickets--;
       printf("SHOP2售出一张飞机票,还剩下 %d 张飞机票\n",tickets);
      }
      else
      {
       printf("售票告罄……\n");
       return 0;
       /*也可以break*/
      }
     }
     return 0;
    }

    就是这样。注释还算详细吧。

    首发:http://www.5dkx.com/arch/144.html

    非特别说明均为原创文章如转载,请注明:转载自 5D开心博客 [ http://www.5DKX.com/ ]

  • 相关阅读:
    预防新型冠状病毒科普宣传网站
    四则运算
    结对审查
    最大子段和
    单元自动测试Junit
    浅谈过去,畅想未来
    第一次的结对编程
    代码审查
    单元测试
    junit4单元测试
  • 原文地址:https://www.cnblogs.com/5dkx/p/1700961.html
Copyright © 2011-2022 走看看