`

用Windows API实现多线程--原理例子

阅读更多

首先必须包含头文件windows.h
下面是一个简单的例子:在主函数中开启新的子线程执行函数f()。

#include <windows.h>
#include <iostream>
using namespace std;


void WINAPI f1(LPVOID pvThread)
{
while (true)
{
printf("inside thread 1\n");
Sleep(1000);
}
}


void WINAPI f2(LPVOID pvThread)
{
while (true)
{
printf("inside thread 2\n");
Sleep(2000);
}
}


int main()
{
HANDLE hThread1 = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)f1,NULL,0,NULL);
HANDLE hThread2 = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)f2,NULL,0,NULL);

if(hThread1 != NULL)
{
WaitForSingleObject(hThread1, INFINITE);
CloseHandle(hThread1);
}
if(hThread2 != NULL)
{
WaitForSingleObject(hThread2, INFINITE);
CloseHandle(hThread2);
}
return 0;
}

其中
if(hThread != NULL)
{
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);
}
这一段很重要,这段让主线程保持住。如果没有这段的话,执行完上一句,主线程不等子线程执行就退出,从而子线程也跟着退出了,就达不到效果。

参考整理于此处:http://topic.csdn.net/t/20020811/00/931486.html#

分享到:
评论

相关推荐

    Windows API开发详解--函数、接口、编程实例

    通过阅读《精通Windows API-函数、接口、编程实例.pdf》这样的资料,开发者可以深入理解Windows API的原理和使用方式,提升自己的系统级编程能力。实践中,不断编写和调试代码,结合API文档和实例,将有助于掌握这个...

    多线程的实现--操作系统

    本文将深入探讨在Windows操作系统下,如何使用C++编程语言实现多线程,并通过小球走动的模拟来直观地理解线程的工作原理。 首先,我们需要了解Windows API中的线程创建函数CreateThread。在VC++中,我们可以通过...

    进程与线程--小练习

    在"进程与线程--小练习"这个主题中,可能包含了一些实践性的例子,比如创建和管理进程、线程的示例,或者展示了如何使用操作系统提供的API来实现进程间通信和线程同步。这些练习可以帮助学习者更好地理解和掌握进程...

    精通Windows_API-函数、接口、编程实例_pdf+源码.rar

    通过实践这些例子,读者可以更直观地理解Windows API的使用方式,并提升自己的编程技能。 此外,源码部分是学习这本书的重要资源。你可以直接查看并运行书中给出的代码,这有助于加深理解,并且可以在遇到问题时...

    精通Windows API 光盘 光盘

    书中详细讲解了如何使用Windows API进行系统级编程,包括窗口管理、消息处理、内存管理、进程与线程控制等多个核心主题。 "windows32 API"是Windows操作系统提供的核心接口,它是开发Windows应用程序的基础。...

    Windows-classic-samples-master.zip_win7 操作系统例子_windows登录

    5. **多线程编程**:登录过程可能涉及到后台进程的启动和同步,需要理解线程间的通信和协调。 6. **调试技巧**:学会使用调试工具如Visual Studio的调试器来追踪登录流程,查找和修复问题。 总的来说,"Windows-...

    精通Windows.API-函数、接口、编程实例

    深入学习Windows API编程需要对操作系统原理有一定的理解,包括进程线程模型、内存管理、中断处理等。同时,还需要熟悉C或C++语言,因为大多数API函数都是用这两种语言的语法进行调用的。对于初学者来说,理解参数的...

    DuoXianCheng.rar_MFC_MFC多线程_MFC多线程例子_MFC界面线程_mfc 多线程

    标题"**DuoXianCheng.rar_MFC_MFC多线程_MFC多线程例子_MFC界面线程_mfc 多线程**"暗示了我们将会讨论如何在MFC应用程序中实现多线程,特别是涉及到UI(用户界面)线程的管理。 MFC是微软为Windows平台开发的应用...

    用大量高级Windows API函数,绝对是经典的源码

    "用大量高级Windows API函数,绝对是经典的源码"这个标题和描述表明,我们可能正在处理一个包含使用了丰富Windows API的源代码库。这样的源码通常对学习Windows系统编程和深入理解操作系统的工作原理非常有价值。 ...

    《C++builder与Windows API经典范例》光盘 郑明 郑世伟 编著

    2. **Windows API函数使用**:详述常见的Windows API函数,如CreateWindow用于创建窗口,SendMessage和PostMessage用于进程间通信,GetWindowText获取控件文本等,并通过实例展示如何在C++Builder中调用这些函数。...

    c++多线程编程初学实例一

    在C++中,多线程编程是现代软件开发中不可或缺的一部分,它允许程序同时执行多个任务,从而提高系统的效率和响应性。本文将探讨C++多线程编程的基础,通过一个简单的实例帮助初学者理解其核心概念。 首先,我们要...

    vc6.0Multi-Thread.zip_vc6 线程_多线程暂停_线程暂停_线程间 通信

    在本文中,我们将深入探讨如何在Microsoft Visual C++ 6.0(简称VC6.0...VC6.0虽然相对较旧,但它提供的工具和方法依然适用于学习和理解多线程编程的核心原理。通过深入研究和实践,你将在多线程编程的道路上迈进一步。

    VP5线程例子

    VP5线程例子是关于如何在Visual Studio 2008下,利用Microsoft Foundation Classes (MFC)框架,构建一个对话框程序,以实现VP5编码器的多线程应用,这主要涉及虚拟现实场景的处理。 VP5是一种视频编码格式,它由On2...

    Forger Windows API tutorial.rar

    例如,可能包含一个简单的窗口程序,该程序创建一个窗口并在其中显示文本,或者可能有一个更复杂的例子,涉及多线程和网络通信。 Windows API中的关键概念还包括GDI(Graphics Device Interface),它允许程序员...

    MFC WINSOCKET多线程编程实例

    通过运行这个例子,你可以直观地看到多线程WINSOCKET编程的工作原理。实际开发时,可以以此为基础,根据具体需求进行修改和扩展,例如添加并发连接支持、优化性能或增强错误处理能力。 总之,MFC结合WINSOCKET的多...

    windows API 一日一练

    此外,线程管理和同步机制如"CreateThread"、"WaitForSingleObject"和"Mutex"等API,对于多线程编程来说必不可少。理解并发和同步的概念,能帮助开发者编写出更加高效和稳定的多线程程序。 安全和权限控制也是...

    CVI多线程概述

    CVI(LabWindows/CVI)是一个集成开发环境,主要面向工程师和科学家,用于测试、测量和控制应用领域的编程。...因此,理解CVI中的多线程工作原理以及实现方法对于开发高效且稳定的多线程应用程序至关重要。

    7月最新易语言API调用例子十则

    在多线程编程中,同步操作至关重要,防止数据竞争和死锁。这个例子可能会使用API函数如CreateMutex或WaitForSingleObject来协调多个线程的执行顺序,确保数据的正确性和程序的稳定性。 五、CreateTimerQueueTimer.e...

    Simple-Windows-Socket-Server-Example.rar_simple_socket server

    8. **多线程或异步处理**:为了同时处理多个客户端连接,服务器通常会为每个连接创建新线程,或者使用异步I/O模型。 9. **TCP与UDP**:TCP(传输控制协议)提供可靠的数据传输,而UDP(用户数据报协议)则更快但不...

Global site tag (gtag.js) - Google Analytics