• 黑客编程教程(五)多线程编程介绍


     对于多线程的基本概念,我不在赘述,是个只要学习过一门编程语言就应该多进程和线程有个基本的了解.这里重点介绍一下如何实现多线程.
    
    通常一个程序的主线程有操作系统创建,如果想让其创建额外的线程,可以调用CreateThread()函数来完成.函数原形如下:
    
    HANDLE CreateThread()
     {
      LPSECURITY_ATTRIBUTES LPThreadAttributes,  //指向SECURITY_ATTRIBUTES的指针
     SIZE_T dwStackSize,                        //表示线程为自己所用堆栈分配的地址空间的大小 系统缺省值为0
      LPTHREAD_START-TOUTINE lpStartAddress,     //表示新线程开始执行时代码所在函数的地址 即线程函数名
     LPVOID lpParameter,                        //是传入线程函数的参数
     DWORD dwCreationFlags,                     //指定控制线程创建的附加标志 取0线程立即执行 取CREATE_SUSPENDED线程挂起
     LPDWORD lpThreadld                         //是个DWORD类型的地址,返回赋给该新线程的ID
     }
    
    线程函数lpParameter必须有以下原形:
    
    DWORD WINAPI XXXThreadFun(LPVOID lpParameter)
     {
      return(0);
     }
    
    ________________________________________________________________________________________________
    下面我们来创建一个线程:
    
    #include <windows.h>
     #include <stdio.h>
     DWORD WINAPI ThreadFunc( LPVOID lpParam )                         //线程函数,跟普通的函数没什么两样
    {
         printf( "Parameter = %d.", *(DWORD*)lpParam );
     return 0;
     }
      
     VOID main( VOID )
     {
         DWORD dwThreadId, dwThrdParam = 1;
         HANDLE hThread;
      hThread = CreateThread( NULL,0,ThreadFunc,&dwThrdParam, 0,&dwThreadId);
           if (hThread == NULL)
        {
           printf( "CreateThread failed (%d)
    ", GetLastError() );
        }
        else
        {
           _getch();
           CloseHandle( hThread );
        }
     }
    
    关于线程同步的问题,这里就不再讲解,请大家自己查阅资料,不查阅以后可能会有困难啊.培养一下各位的自己动手能力.
  • 相关阅读:
    解析HTTP协议六种请求方法
    金蝶
    普元
    中间件
    [CTSC2008] 网络管理
    【Uva 10498】满意值
    【SPOJ839】最优标号
    bzoj2879 [Noi2012]美食节
    bzoj3144 [Hnoi2013]切糕
    bzoj3112 [Zjoi2013]防守战线
  • 原文地址:https://www.cnblogs.com/rinack/p/3184949.html
Copyright © 2020-2023  润新知