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

相关文章

来自专栏葡萄城控件技术团队

ASP.NET MVC 5– 使用Wijmo MVC 5模板1分钟创建应用

开始使用 使用Wijmo制作MVC5应用程序,首先要做的是安装Wijmo 。 测试环境 VS2013(VS2010,VS2012支持MVC3,MVC4)、MVC...

2368
来自专栏乐沙弥的世界

查看及管理Oracle patch

    Oracle patch也即是Oracle补丁。Oracle补丁又包含好几个种类,小的补丁简直是难以数计,难免让人眼花缭乱。尽管如此,Oracle pa...

1111
来自专栏施炯的IoT开发专栏

在Windows Mobile上使用WINCE自带数据库

    通过数据库,可以方便地存储和检索数据,极大地提高工作效率。在Windows CE .NET 4.2上,自带了一个数据库,具体我们可以参考MSDN上的网页...

2069
来自专栏Oracle

Oracle内存数据库使用

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

1362
来自专栏张善友的专栏

ASP.NET MVC扩展库

很多同学都读过这篇文章吧 ASP.NET MVC中你必须知道的13个扩展点,今天给大家介绍一个ASP.NET MVC的扩展库,主要就是针对这些扩展点进行。这个项...

1997
来自专栏.NET技术

Visual Studio Package 插件开发

  这段时间公司新做了一个支付系统,里面有N个后台服务,每次有更新修改,拷贝打包发布包“不亦乐乎”。。。于是我想要不要自己定制个打包插件。

1413
来自专栏逸鹏说道

跨平台:使用OWIN 为WebAPI 宿主

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

2334
来自专栏『不羁阁』 | 行走少年郎专栏

iOS多线程:『RunLoop』详尽总结RunLoop

9015
来自专栏张善友的专栏

Json.NET 3.0

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

2046
来自专栏ASP.NETCore

ASP.NET Core中的ActionFilter与DI

  前几篇文章都是讲ASP.NET Core MVC中的依赖注入(DI)与扩展点的,也许大家都发现在ASP.NET CORE中所有的组件都是通过依赖注入来扩展的...

1365

扫码关注云+社区

领取腾讯云代金券