zoukankan      html  css  js  c++  java
  • windows多线程(一) 创建线程 CreateThread

    一 线程创建函数 CreateThread

    修改说明:
    这里 说了另一种创建线程方法,使用_beginthreadex()更安全的创建线程,在实际使用中尽量使用_beginthreadex()来创建线程,在博客中使用 CreateThread()l来创建线程其实是一种不太好的方法,不过这里只做原理分析,不用在实际项目中,暂且就这样吧!

    1. 函数原型:

    
    	HANDLE WINAPI CreateThread(
    	  _In_opt_  LPSECURITY_ATTRIBUTES  lpThreadAttributes,   
    	  _In_      SIZE_T                 dwStackSize,
    	  _In_      LPTHREAD_START_ROUTINE lpStartAddress,
    	  _In_opt_  LPVOID                 lpParameter,
    	  _In_      DWORD                  dwCreationFlags,
    	  _Out_opt_ LPDWORD                lpThreadId
    	);
    

    2. 参数说明:

    • 第一个参数 lpThreadAttributes 表示线程内核对象的安全属性,一般传入NULL表示使用默认设置。

    • 第二个参数 dwStackSize 表示线程栈空间大小。传入0表示使用默认大小(1MB)。

    • 第三个参数 lpStartAddress 表示新线程所执行的线程函数地址,多个线程可以使用同一个函数地址。

    • 第四个参数 lpParameter 是传给线程函数的参数。

    • 第五个参数 dwCreationFlags 指定额外的标志来控制线程的创建,为0表示线程创建之后立即就可以进行调度,如果为CREATE_SUSPENDED则表示线程创建后暂停运行,这样它就无法调度,直到调用ResumeThread()。

    • 第六个参数 lpThreadId 将返回线程的ID号,传入NULL表示不需要返回该线程ID号。

    3.返回值

    线程创建成功返回新线程的句柄,失败返回NULL

    二 实例

    
    
    /* 创建第一个线程。主进程结束,则撤销线程。 */
    
    #include<Windows.h>
    #include<stdio.h>
    
    DWORD WINAPI ThreadFunc(LPVOID);
    
    void main()
    {
    	HANDLE hThread;
    	DWORD  threadId;
    
    	hThread = CreateThread(NULL, 0,	ThreadFunc, 0, 0, &threadId); // 创建线程
    	printf("我是主线程, pid = %d\n", GetCurrentThreadId());  //输出主线程pid
    	Sleep(2000);
    }
    
    DWORD WINAPI ThreadFunc(LPVOID p)
    {	
    	printf("我是子线程, pid = %d\n", GetCurrentThreadId());   //输出子线程pid
    	return 0;
    }
    
    
    
    
    

    这个程序功能很简单,主线程创建一个线程,同时主线程和子线程分别向控制台输出线程的PID,如下图:

  • 相关阅读:
    JZ初中OJ 2266. 古代人的难题
    JZ初中OJ 1341. [南海2009初中] water
    JZ初中OJ 1340. [南海2009初中] jumpcow
    JZ初中OJ 2000. [2015.8.6普及组模拟赛] Leo搭积木
    JZ初中OJ 1999.[2015.8.6普及组模拟赛] Wexley接苹果
    Unity Android平台下插件/SDK开发通用流程
    UNITY接入支付宝(未测试可行)
    Unity接入支付宝(免写安卓代码,使用JAR方式)
    Unity之多态
    unity与android交互(1)与(2)网友的整理
  • 原文地址:https://www.cnblogs.com/ganxiang/p/13070922.html
Copyright © 2011-2022 走看看