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 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

在Mono 2.8上部署ASP.NET MVC 2

Mono 2.8发布:C#4.0和更好的性能,我们知道Mono 2.8对ASP.NET MVC 2的完全支持,下面我们就来测试下在Mono 2.8上部署ASP....

1965
来自专栏wym

socket---TCP服务器界面

#include<winsock2.h> #pragma comment(lib,"ws2_32.lib") #define DEFAULT_iPor...

1092
来自专栏朱慕之的博客

RunLoop

RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之...

1102
来自专栏字根中文校对软件

BitShares 2.0 环境设置

BitShares 2.0 环境设置 工作环境:Ubuntu 第一步:准备环境与下载 BitShares 2.0  Core 源代码: bitshares-c...

3726
来自专栏逸鹏说道

跨平台:使用OWIN 为WebAPI 宿主

OWIN是什么? OWIN的英文全称是Open Web Interface for .NET。 如果仅从名称上解析,可以得出这样的信息:OWIN是针对.NET平...

2194
来自专栏walterlv - 吕毅的博客

(1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序

发布于 2018-07-25 01:27 更新于 2018-07...

1461
来自专栏Oracle

Oracle内存数据库使用

t.inmemory, t.inmemory_priority, t.inmemory_distribute, t.inmemory_compression, ...

1212
来自专栏腾讯开源的专栏

Tencent Joins the GPL Cooperation Commitment

? Hong Kong, 07 November, 2018 – Tencent, a leading provider of Internet servic...

1282
来自专栏张善友的专栏

Json.NET 3.0

Json.NET,提供相当完整的文档之外,还提供了 LINQ to JSON 的 LINQ Provider 可以更方便的读取JSON 对象,今后将可比以往用更...

1886
来自专栏张善友的专栏

SimpleMembershipProvider 和 OAuth

ASP.NET MVC 4带了一个新的Membership 系统,Jon Galloway 写了一篇很详细的博客《SimpleMembership, Membe...

19010

扫码关注云+社区