• 创建线程


     1 //首先介绍widows创建线程的两个函数
     2 //创建线程函数
     3 
     4 HANDLE CreateThread(  LPSECURITY_ATTRIBUTES lpThreadAttributes,   
     5        SIZE_T dwStackSize, 
     6        LPTHREAD_START_ROUTINE lpStartAddress,
     7         LPVOID lpParameter,
     8        DWORD dwCreationFlags, 
     9       LPDWORD lpThreadId ) ;
    10 
    11 //如果是写的C++运行库代码,应该用下面这个函数。
    12 具体原因可以参照下面博客上的解释
    13 http://www.cnblogs.com/wParma/archive/2009/10/30/1593002.html
    14 
    15 _beginthreadex(void *security ,            //此函数专用于C/C++运行库线程的创建
    16     unsigned static_size ,             //自己在MFC中试了一下,会阻塞主线
    17     unsigned (*start_address)(void*),
    18     void *arglist,
    19     unsigned initflg,
    20     unsigned *thrdaddr) ;
    21 //下面我们看一个例子
    22 #include "windows.h"
    23 #include <process.h>      /* _beginthread, _endthread */
    24 #include "iostream"
    25 using namespace std;
    26 //定义线程函数
    27 DWORD WINAPI ThreadFunC(PVOID pvParam) ;
    28 int main()
    29 {
    30      /*创建线程函数,调用这个函数便会产生一个线程,
    31        即使入口函数和参数一样,但是也属于不同线程。*/
    32 
    33     HANDLE hTread = CreateThread(NULL,0,ThreadFunC,0,NULL,0) ; 
    34     //_beginthreadex(NULL,0,(unsigned int (__stdcall *)(void *))ThreadFunC,0,0,NULL);    
    35     CloseHandle(hTread);  //关闭线程句柄,使其使用数递减。
    36     getchar() ;
    37     return 0;
    38 }
    39 DWORD  WINAPI ThreadFunC(PVOID pvParam)
    40 {
    41     int i = 0 ;
    42     while (1)
    43     {
    44         i++;
    45         Sleep(1000);
    46         cout<<"我是线程函数,我运行了"<<i<<"次了"<<"
    ";
    47     }
    48     return 0 ;
    49 }
    50  
  • 相关阅读:
    计算机硬件
    队列、堆、栈、堆栈的区别
    操作系统与应用程序的关系
    DNS与HTTPDNS
    配置静态路由传送网络包
    django的nginx配置
    视频流和文件传输相关协议
    HTTPS 对称加密和非对称加密
    HTTP1.1/2.0与QUIC协议
    mysql join联表 + id自增
  • 原文地址:https://www.cnblogs.com/yfyzy/p/3916154.html
Copyright © 2020-2023  润新知