VC线程入门实例

简介:
1. 用MFC AppWizzard(exe) 创建一个project;
2. 在ClassView选项卡下,右键单击project的根目录,在弹出菜单中选择”new class”,然后弹出如下的列表框,在Name中填写CMyThread,Base class:选选择CwinThread,点击”OK”.
clip_image002
3. 线程创建完毕.
4. 为线程类和要调用线程类的类中分别添加3个事件信号
public:
HANDLE m_hStop;
HANDLE m_hStopped;
HANDLE m_hExit;
5. 重载线程类的构造函数,创建一个有3个参数的线程类的构造函数为public,如:
CMyThread (HANDLE hStop,HANDLE hStopped,HANDLE hExit);
6. 在要调用此线程类的类中初始化事件信号和线程,如:
m_hStop = CreateEvent(NULL,true,false,NULL);
m_hStopped = CreateEvent(NULL,true,false,NULL);
m_hExit = CreateEvent(NULL,true,false,NULL);
m_pThread = new CTestThread(m_hStop,m_hStopped,m_hExit);
7. 为线程类和要调用线程类的类中分别添加3个事件信号
public:
HANDLE m_hStop;
HANDLE m_hStopped;
HANDLE m_hExit;
8. 重写线程类的虚函数run();如:
int CMyThread::Run()
{
CString str;
for(int n=0;;n++)//一个死循环
{
DWORD dw = WaitForSingleObject(m_hStop,0);//等待停止信号
if(dw==WAIT_OBJECT_0)
break;
str.Format("%d",n);
m_pMainWnd->PostMessage(WM_TEST,(WPARAM)(str.operator LPCTSTR()),0);
Sleep(100);
}
SetEvent(m_hStopped);//付出关闭线程的信号
return CWinThread::Run();
}
9. 在需要调用此线程类的地方,声明线程类的指针,并调用CreateThread()如下所示:
CMyThread* pMyThread = new CMyThread();
pMyThread ->CreateThread();
10. 重写线程类的ExitInstance()函数,发出关闭信号事件,如:
int CTestThread::ExitInstance()
{
SetEvent(m_hExit);
return CWinThread::ExitInstance();
}
11.线程结束.


本文转自jazka 51CTO博客,原文链接:http://blog.51cto.com/jazka/196967,如需转载请自行联系原作者
相关文章
|
10月前
|
存储 监控 Java
【Java并发】【线程池】带你从0-1入门线程池
欢迎来到我的技术博客!我是一名热爱编程的开发者,梦想是编写高端CRUD应用。2025年我正在沉淀中,博客更新速度加快,期待与你一起成长。 线程池是一种复用线程资源的机制,通过预先创建一定数量的线程并管理其生命周期,避免频繁创建/销毁线程带来的性能开销。它解决了线程创建成本高、资源耗尽风险、响应速度慢和任务执行缺乏管理等问题。
455 60
【Java并发】【线程池】带你从0-1入门线程池
|
安全 数据处理 开发者
Python中的多线程编程:从入门到精通
本文将深入探讨Python中的多线程编程,包括其基本原理、应用场景、实现方法以及常见问题和解决方案。通过本文的学习,读者将对Python多线程编程有一个全面的认识,能够在实际项目中灵活运用。
|
算法 NoSQL Java
Springboot3新特性:GraalVM Native Image Support和虚拟线程(从入门到精通)
这篇文章介绍了Spring Boot 3中GraalVM Native Image Support的新特性,提供了将Spring Boot Web项目转换为可执行文件的步骤,并探讨了虚拟线程在Spring Boot中的使用,包括如何配置和启动虚拟线程支持。
921 9
Springboot3新特性:GraalVM Native Image Support和虚拟线程(从入门到精通)
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
|
安全 Java 调度
Java中的多线程编程入门
【10月更文挑战第29天】在Java的世界中,多线程就像是一场精心编排的交响乐。每个线程都是乐团中的一个乐手,他们各自演奏着自己的部分,却又和谐地共同完成整场演出。本文将带你走进Java多线程的世界,让你从零基础到能够编写基本的多线程程序。
136 1
|
Java 数据处理 开发者
Java多线程编程的艺术:从入门到精通####
【10月更文挑战第21天】 本文将深入探讨Java多线程编程的核心概念,通过生动实例和实用技巧,引导读者从基础认知迈向高效并发编程的殿堂。我们将一起揭开线程管理的神秘面纱,掌握同步机制的精髓,并学习如何在实际项目中灵活运用这些知识,以提升应用性能与响应速度。 ####
144 3
Java中的多线程编程:从入门到精通
本文将带你深入了解Java中的多线程编程。我们将从基础概念开始,逐步深入探讨线程的创建、启动、同步和通信等关键知识点。通过阅读本文,你将能够掌握Java多线程编程的基本技能,为进一步学习和应用打下坚实的基础。
|
安全 Java 调度
「Python入门」Python多线程
1. **线程与进程区别**:线程共享内存,进程独立;线程启动快,多线程效率高于多进程。 2. **多线程使用**:直接使用Thread类,通过`target`指定函数,`args`传递参数;或继承Thread,重写`run`方法。 3. **守护线程**:设置`setDaemon(True)`,主线程结束时,守护线程一同结束。 4. **join线程同步**:主线程等待子线程完成,如`t.join()`。 5. **线程锁**(Mutex):防止数据竞争,确保同一时间只有一个线程访问共享资源。 6. **RLock(递归锁)**:允许多次锁定,用于需要多次加锁的递归操作。
130 1
「Python入门」Python多线程
|
安全 数据库连接 API
C#一分钟浅谈:多线程编程入门
在现代软件开发中,多线程编程对于提升程序响应性和执行效率至关重要。本文从基础概念入手,详细探讨了C#中的多线程技术,包括线程创建、管理及常见问题的解决策略,如线程安全、死锁和资源泄露等,并通过具体示例帮助读者理解和应用这些技巧,适合初学者快速掌握C#多线程编程。
229 0
|
Java 数据处理 调度
Java多线程编程入门指南
Java多线程编程入门指南

热门文章

最新文章