Windows核心编程:第6章 线程基础

Github

https://github.com/gongluck/Windows-Core-Program.git

//第6章 线程基础.cpp: 定义应用程序的入口点。
//

#include "stdafx.h"
#include "第6章 线程基础.h"
#include <process.h>

//线程函数
DWORD WINAPI ThreadProc(PVOID param)
{
    return 0;
}
unsigned __stdcall ThreadProc2(void* param)
{
    return 0;
}

int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    //创建Windows线程
    HANDLE hthread = CreateThread(nullptr, 0, ThreadProc, nullptr, CREATE_SUSPENDED, nullptr);
    ResumeThread(hthread);
    system("pause");
    BOOL bret = TerminateThread(hthread, 0);//终止线程(异步),可能会导致资源没有释放(例如没有调用线程里类实例的析构函数!)
    DWORD exitcode;
    bret = GetExitCodeThread(hthread, &exitcode);//可能是STILL_ACTIVE或者退出代码
    WaitForSingleObject(hthread, INFINITE);
    CloseHandle(hthread);
    hthread = nullptr;

    //创建C++线程
    hthread = (HANDLE)_beginthreadex(nullptr, 0, ThreadProc2, nullptr, 0, nullptr);
    CloseHandle(hthread);
    hthread = nullptr;

    //将GetCurrentThread()得到的伪句柄转换成可用的句柄.(记住:句柄表属于进程,线程共享句柄表)
    bret = DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), GetCurrentProcess(), &hthread, 0, FALSE, DUPLICATE_SAME_ACCESS);
    CloseHandle(hthread);

    system("pause");
    return 0;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据和云

极限优化:从75到2000,由技能到性能提升岂止20倍

崔华,网名 dbsnake Oracle ACE Director,ACOUG 核心专家 编辑手记:感谢崔华授权我们独家转载其精品文章,也欢迎大家向“Oracl...

2224
来自专栏码匠的流水账

聊聊rocketmq的PushConsumerImpl

io/openmessaging/rocketmq/consumer/PushConsumerImpl.java

912
来自专栏跟着阿笨一起玩NET

OpenFileDialog Filter属性设置所有图片格式

521
来自专栏乐沙弥的世界

使用 Toad 实现 SQL 优化

       It is very easy for us to implement sql tuning by toad.  We need to do is...

492
来自专栏杨建荣的学习笔记

查看空间使用情况的脚本(r2笔记第2天)

在数据库中,我们可以使用如下的3个脚本来查看表空间的使用情况,表空间的增长情况,表未使用的空间情况等等。 showunused.sh 可以查看未使用的空间情况...

2084
来自专栏c#开发者

Modifying namespace in XML document programmatically

Modifying namespace in XML document programmatically static XElement stripNS(XEl...

2916
来自专栏张善友的专栏

How does it work in Mono's C# compiler?

Introduction Mono is an Open Source free programming language project. It is an ...

2697
来自专栏小鹏的专栏

ubuntu下C++如何调用python程序,gdb调试C++代码

Linux下gdb调试C++代码:http://jingyan.baidu.com/article/acf728fd464984f8e410a369.html ...

2499
来自专栏数据和云

Oracle Hints - 先知的提示

在上周恩墨微信大讲堂的讨论中,几个有趣的视图跃入我们的视野,可以分享给大家。 在Oracle 11g中,新增的视图V$SQL_HINT记录了Oracle数据库中...

2706
来自专栏岑玉海

hbase源码系列(四)数据模型-表定义和列族定义的具体含义

  hbase是一个KeyValue型的数据库,在《hbase实战》描述它的逻辑模型【行键,列族,列限定符,时间版本】,物理模型是基于列族的。但实际情况是啥?还...

3256

扫码关注云+社区