HANDLE threadhandle = CreateThread(NULL, 0, RecvThreadProc, NULL, NULL, NULL);

CloseHandle(threadhandle); 
 不明白为什么创建线程后,要马上把线程的句柄关闭,这样做的目的是什么? 这样做会杀掉线程吗?

解答:

创建线程后返回了线程句柄,新创建的线程内核对象的使用计数是2,一个是线程本身,一个是创建线程的线程,创建线程的线程closehandle后,新的线程的内核对象使用计数为1,当这个新线程结束运行后内核对象的使用计数还要减1,这时内核对象的使用计数是0,则系统会自动删除新线程的内核对象,这是正常的处理流程。

你如果不显示的调用closehandle,则新线程结束运行后,由于内核对象使用计数为1,所以不会删除内核对象,会造成内存泄露,不过当整个进程结束时操作系统会自动关闭该进程的所有的内核对象包括这个新线程的内核对象,所以你不调用closehandle问题不大,只是在你的进程运行的时候会造成内存泄露,进程结束后系统是会自动清理的。

转载于:https://www.cnblogs.com/tianlangshu/archive/2011/03/20/1989573.html

线程创建后,立刻调用CloseHandle的原因相关推荐

  1. android onresume函数,android - 在Activity中重新创建后未调用onResume

    在应用程序设置中进行某些更改时,我在recreate的onActivityResult中调用MainActivity.重新创建后,不调用onResume. 我也收到错误:E/ActivityThrea ...

  2. VC多线程编程之线程创建与示例

    一.问题的提出 编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX ...

  3. Java四种线程创建的思路

    一.哪四种 传统的是继承thread类和实现runnable接口,java5以后又有实现callable接口和java的线程池获得. callable相比于runnable,多了返回值,抛出了异常. ...

  4. 【C++ 语言】线程 ( 线程创建方法 | 线程标识符 | 线程属性 | 线程属性初始化 | 线程属性销毁 | 分离线程 | 线程调度策略 | 线程优先级 | 线程等待 )

    文章目录 I 线程创建方法 II 线程执行函数 III 线程标识符 IV 线程属性 V 线程属性 1 ( 分离线程 | 非分离线程 ) VI 线程属性 2 ( 线程调度策略 ) VII 线程属性 3 ...

  5. windows下线程创建

    windows下线程创建: CreateThread()函数是Windows提供的API接口 1.HANDLE WINAPI CreateThread( LPSECURITY_ATTRIBUTESlp ...

  6. pthread_detach():主线程与子线程分离,子线程结束后,资源自动回收

    https://github.com/Rtoax/test/tree/master/c/glibc/pthread 目录 前言 pthread_join() pthread_detach() 前言 1 ...

  7. linux 2.6线程创建源码分析

    2019独角兽企业重金招聘Python工程师标准>>> 上章讲到线程,现在对线程创建的代码流程分析下.来一步一步揭开她神秘的面纱 linux内核创建线程函数 kernel_threa ...

  8. 创建线程后为什么马上调用CloseHandle()来关闭句柄

    hThread = CreateThread( NULL, 0, ThreadFunc, NULL, 0, &dwThreadId); CloseHandle(hThread); 如上面这样的 ...

  9. C# 委托高级应用----线程——创建无阻塞的异步调用(一)

    前言 本文大部分内容来自于mikeperetz的Asynchronous Method Invocation及本人的一些个人体会所得,希望对你有所帮助.原英文文献可以在codeproject中搜索到. ...

最新文章

  1. python字符串截取split-python实现字符串完美拆分split()的方法
  2. java求质数为什么%3ci 2_C语言程序设计部分习题及例题参考程序
  3. 2017-2018-1 20155336 《信息安全系统设计基础》第八周课堂测试
  4. 原生js的ajax请求
  5. android Ant批打包学习(零)--基础知识
  6. TSQL与PL/SQL的比较
  7. android cne服务,Android内存优化-了解内存篇
  8. JAVA1.6实现动态编译加载运行
  9. C++设计模式之Adapter
  10. 修改已经创建的docker容器的端口映射
  11. Android嵌套滑动冲突
  12. 小波多尺度分析的发明:跨学科创新的典范
  13. session的概念特点及原理
  14. JAVA集合框架概述
  15. Ubuntu常用软件安装
  16. pmp知识点(11)-项目风险管理
  17. s3c6410 开发板Linux系统支持 K9GAG08U0E的方法(第二篇)
  18. LOJ 6229 LCM / GCD (杜教筛+Moebius)
  19. php更换banner图片,jQuery简单实现banner图片切换
  20. Elasticsearch-2-附面试题

热门文章

  1. boost::threadpool 调用类成员变量并传入参数 的方法
  2. 配置虚拟主机 和 打war包
  3. linux echo命令的-n、-e两个参数
  4. iOS--动画demo--Launch Image淡出效果
  5. JavaWeb应用开发环境-Tomcat服务器
  6. Android TableLayout 常用的属性介绍及演示
  7. 40个精美绝伦的国外网站设计作品范例(下)
  8. 函数09 - 零基础入门学习C语言40
  9. 逆向--- crackme6
  10. Redis源码简要分析