多线程概述

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

一、多线程杂记

1、计算问题的类型。
决定给定的多线程计算是否是一个优秀的方案最重要的因素是该计算是一个基于CPU的计算还是一个基于IO的计算。

2、多线程的设计目标
a、增强的性能 b、增强的容量(也称响应,指每一个计算的平均处理周期的时间) c、快速的反应

二、利用Win 32 API的线程编程技术
1、编写线程函数
DWORD WINAPI YourThreadFunc(LPVOID lpvThreadParm)

2、创建一个线程
HANDLE CreateThread(
  LPSECURITY_ATTRIBUTES lpThreadAttributes,  // pointer to security attributes
  DWORD dwStackSize,                         // initial thread stack size
  LPTHREAD_START_ROUTINE lpStartAddress,     // pointer to thread function
  LPVOID lpParameter,                        // argument for new thread
  DWORD dwCreationFlags,                     // creation flags
  LPDWORD lpThreadId                         // pointer to receive thread ID
);

3、终止线程
VOID ExitThread(
  DWORD dwExitCode   // exit code for this thread
);

BOOL TerminateThread(
  HANDLE hThread,    // handle to the thread
  DWORD dwExitCode   // exit code for the thread
);

4、设定线程的优先级
BOOL SetThreadPriority(
  HANDLE hThread, // handle to the thread
  int nPriority   // thread priority level
);

5、挂起和恢复线程
恢复
DWORD ResumeThread(
  HANDLE hThread   // identifies thread to restart
);
挂起
DWORD SuspendThread(
  HANDLE hThread   // handle to the thread
);
注:一个线程可以被挂起多次,在系统为其分配CPU之前,被恢复的次数一定要等于被挂起的次数。

三、利用MFC进行多线程编程
基本原理同Win 32函数一致
在MFC中,有两种线程 A、用户界面线程 B、工作线程

用户界面线程:常用于接收用户的输入,处理相应的事件和消息。在用户界面线程中,包含一个消息处理循环,如从CWiThread类派生出的CWinApp

工作线程:常用于任务处理(如计算)。不要求用户输入,对用而言,它在后台运行。

在编写用户界面线程时,需要从CWinThread派生出自己的线程类
步骤:
(1)用ClassWizerd派生一个新的类,基类是CWinThread
注:类的DECLEARE_DYNCREATE 和 IMPLEMENT_DYNCREATE宏是必需的。因为创建线程时需要动态创建类的对象
(2)创建并启动线程
 

网狐棋牌QueueService 1.IQueueService,在SetQueueServiceSink函数中,设置IQueueServiceSink事件钩子。 2.IQueueServiceSink: 通知回调函数 ////////////////////////////////////////////////////////////////////////// //函数名:OnQueueServiceSink 阅读详情

相关推荐

网狐定时器引擎分析

先贴出来网狐源码: #ifndef WH_THREAD_HEAD_FILE #define WH_THREAD_HEAD_FILE #pragma once #include "ServiceCoreHead.h" ////////////////////////////////////////////////////////////////////////////////// //线程

liujiayu2的专栏 3579

用CWinThread派生类创建带有窗口的线程(VC++) http://www.softist.com/programemo/cwinthread/cwinthread.htm

一个子线程里的窗口不能使用主线程里消息收发处理,必须在子线程里追加消息收发处理。继承CWinThread类可以实现消息收发处理。以下是编程测试笔记。 1.创建线程类。从CWinThread派生CTestThread类。CTestThread();上面的protected:改成public:。为了简单起见,在重载的InitInstance()函数里,创建一个简单

ylxjtu的专栏 1075

服务核心 - 线程类

代码对windows线程进行了很好的抽象,用面向对象的思想进行了封装,用户只用重点关注三个函数: 1、OnEventThreadRun --线程运行函数 2、OnEventThreadStrat --线程开始事件 3、OnEventThreadConclude --线程结束事件 对象声明 1 //线程对象 2 class SERVICE_...

weixin_30249203的博客 110

网狐动态数组CWHArray

#ifndef ARRAY_HEAD_FILE #define ARRAY_HEAD_FILE #pragma once ////////////////////////////////////////////////////////////////////////////////// //数组模板类 template class CWHArray { //

liujiayu2的专栏 2704

多线程 一】概述

前言: 此篇博客对多线程是一个整体的概述过程,后续会有具体的讲解。 1、导图: 2、何为线程 线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。java就是一个多线程的,因为一个java应用程序最少也会有三个线程,比如man()线程,gc垃圾回收程序,异常处理线程 3、为什么要用多线程 问题引入:举个栗子,如果单核cpu,只使用单个线程先后完成多个任务(调用多个方法),肯定比用多个线程来完成的时间更短(大家想想

李光 未来科技 284

多线程——线程概述与线程的创建

1. 线程的概述 1.1进程 在一个操作系统中,每个独立执行的程序都可以称为一个进程,就是一个正在运行的程序。 例如在windows系统中启动任务管理器,在任务管理器面板中点击进程选项可以看到当前正在运行的程序,也就是系统所有的进程,如下图所示。 CPU的高并发 在多任务操作系统中,表面上看是进程并发执行的,比如可以一边看视频,一边聊天,但其实并运行不是并发运行的。所有的应用程序都是由CPU运行的,对于一个CPU而言同一时间只能运行一个程序,也就是只执行一个进程。系统会在某一段时间分配CPU执

qq_45157942的博客 202

C++11多线程编程 一:多线程概述

一:多线程概述

qq_34761779的博客 1028

多线程知识概述

线程创建 / 安全机制

m0_74012211的博客 685

Java多线程概述

1. 并发与并行 并发:指两个或多个事件在同一个时间段内发生。 并行:指两个或多个事件在同一时刻发生(同时发生)。 在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时运行,这在单 CPU 系统中,每一时刻只能有一道程序执行,即微观上这些程序是分时的交替运行,只不过是给人的感觉是同时运行,那是因为分时交替运行的时间是非常短的。 而在多个 CPU 系统中,则这些可以并发执行的...

zmq000的博客 247

一. 多线程概述

一、问题的提出       编写一个耗时的单线程程序:   新建一个基于对话框的应用程序SingleThread,在主对话框上添加一个按钮,按钮功能“延时6秒”,代码如下:   void CSingleThreadDlg::OnButtonSleepSixSecond() {         Sleep(6000); //延时6秒 }   单击“延时6秒”按钮,在这6秒期间程序

hlfkyo的专栏 654

java多线程技术概述

指两个或多个事件在发生。:指两个或多个事件在发生(同时发生)。进程线程。

_晚秋的博客 147

多线程概述及线程实现

第1章多线程概述 学习多线程之前,我们先要了解几个关于多线程有关的概念。 A:进程:进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能。 B:线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。 C:简而言之:一个程序...

qq_40208605的博客 157

多线程概述

多线程概述 多线程又分为两类: 线程 进程 进程 是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间 线程 是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换,并发执行. 一个进程最少有一个线程 线程实际上是在进程基础之上的进一步划分,一个进程启动之后,里面的若干执行路径又可以划分成若干个线程 多线程实现的方法一般有两个:Thread和Runnable 在此还有一个带返回值的Callable线程,它也属于一种线程的实现方法,但是使用较少,这里不做介绍。 看看案例 ①:手动

weixin_44230419的博客 167

Python 中多线程概述

我们知道,在一台计算机中,我们可以同时打开许多软件,比如同时浏览网页,听音乐,打字等等,看似非常正常。但是仔细想想,为什么计算机可以做到这么多软件同时运行呢?这就涉及到计算机中的两个重要概念:多进程和多线程了。

zzzzls 的博客 243
上一篇: 走近STL(转)
下一篇: 关于软连接与硬连接的问题
coovig
博客等级 码龄19年 10粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值