线程编程
文章平均质量分 76
ouyangshima
找到心中的那份自信
技术不牢,地动山摇
展开
-
[多线程]C++11多线程-条件变量(std::condition_variable)
互斥量(std::mutex)是多线程间同时访问某一共享变量时,保证变量可被安全访问的手段。在多线程编程中,还有另一种十分常见的行为:线程同步。线程同步是指线程间需要按照预定的先后次序顺序进行的行为。C++11对这种行为也提供了有力的支持,这就是条件变量。条件变量位于头文件condition_variable。条件变量能阻塞一个或多个线程,直到收到另外一个线程发出的通知或者超时,才会唤醒当前阻塞的...原创 2020-03-31 19:04:47 · 994 阅读 · 0 评论 -
[多线程]C++11多线程用法整理
C++11中加入了<thread>头文件,此头文件主要声明了std::thread线程类。C++11的标准类std::thread对线程进行了封装,定义了C++11标准中的一些表示线程的类、用于互斥访问的类与方法等。应用C++11中的std::thread便于多线程程序的移值。关联头文件<thread>:该头文件主要声明了 std::thread 类,另外 std:...原创 2020-03-17 23:30:11 · 1367 阅读 · 0 评论 -
[多线程]windows线程小结
线程同步是一个非常大的话题,包括方方面面的内容。从大的方面讲,线程的同步可分用户模式的线程同步和内核对象的线程同步两大类。用户模式中线程的同步方法主要有原子访问和临界区等方法。其特点是同步速度特别快,适合于对线程运行速度有严格要求的场合。 内核对象的线程同步则主要由事件、等待定时器、信号量以及信号灯等内核对象构成。由于这种同步机制使用了内核对象,使用时必须将线程从用户模式切换到内核模式,而这原创 2013-08-19 12:34:32 · 1762 阅读 · 0 评论 -
[Win32]C++多线程编程实例
http://blog.csdn.net/chen825919148/article/details/7904219 //这是2个线程模拟卖火车票的小程序#include #include using namespace std;DWORD WINAPI Fun1Proc(LPVOID lpParameter);//thread dataDWORD WINAPI Fun2Pro原创 2012-11-12 11:43:14 · 1208 阅读 · 1 评论 -
多线程的那些事(之基础篇)
多线程编程时现代软件技术中很重要的一个环节。弄懂多线程,就要牵涉到多进程吗?当然,要了解到多进程,就要涉及到操作系统。(1)单CPU下的多线程在没有出现多核CPU之前,我们的计算资源是唯一的。如果系统中有多个任务要处理的话,那么就需要按照某种规则以此调度这些任务进行处理。什么规则呢?可以使一些简单的调度方法,比如说1>按照优先级调度2>按照FIFO调度3>按照时间片调度等等原创 2012-11-19 21:03:36 · 1004 阅读 · 0 评论 -
多线程的那些事(之数据同步)
线程同步:是指线程之间所具有的一种制约关系,一个线程的执行依赖于另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒多线程的创建其实十分简单,在windows系统下面有很多函数可以创建多线程,比如说_beginthread。我们可以用它来创建一个简单的多线程代码。// ThreadDataSync1.cpp : 定义控制台应用程序的入口点。//多线程的那些事(之原创 2012-11-20 10:11:41 · 898 阅读 · 0 评论 -
[MFC]MFC同步类总结
MFC同步类CCriticalSection临界区:在用户模式工作(遇到加锁等待时会进入内核模式),使用与保护线程间共享资源,一个线程可以多次Lock不会错。不支持在多进程之间工作。将一段代码置入临界区,只允许最多一个线程进入执行这段代码。一个临界区仅在创建它的进程中有效。CMutex互斥量:在内核模式工作,除支持临界区的功能外,还可以为互斥量命名,以便在多进程中工作。互斥量比临界区耗原创 2013-05-09 21:14:39 · 2051 阅读 · 0 评论 -
[MFC]同步对象——CEvent事件,CMutex互斥量
实例——CEvent事件头文件关键代码:// MFCEventDlg.h : 头文件#pragma once#define WM_MSG WM_USER+1typedef struct THREAD_PARAM{ HWND hWnd; int nData; CEvent* pEvent;}_THREAD_PARAM;UINT ThreadFun(LPVOID pParam原创 2013-04-27 21:12:13 · 2673 阅读 · 0 评论 -
[MFC]同步对象——CCriticalSection临界区,CSemaphore信号量
实例——CCriticalSection临界区临界区是保证在某一个时间只有一个线程可以访问数据的方法。使用它的过程中,需要给每个线程提供一个共享的临界区对象,无论哪个线程占有临界区对象,都可以访问受到保护的数据,这时候其他的线程需要等待,直至该线程释放临界区对象为止,临界区被释放后,另外的线程可以强占这个临界区,以便访问共享的数据。临界区对应的一个CCriticalSection对象,原创 2013-04-28 18:05:18 · 2141 阅读 · 0 评论 -
[进程]进程知识概述
背景进程和线程都是一个时间段的描述,是CPU工作时间段的描述。下面细说背景:CPU+RAM+各种资源(比如显卡,光驱,键盘,GPS, 等等外设)构成我们的电脑,但是电脑的运行,实际就是CPU和相关寄存器以及RAM之间的事情。一个最最基础的事实:CPU太快,太快,太快了,寄存器仅仅能够追的上他的脚步,RAM和别的挂在各总线上的设备完全是望其项背。那当多个任务要执行的时候怎么办呢?轮流着来?或者...原创 2013-05-03 20:38:44 · 2540 阅读 · 0 评论 -
[进程]进程的状态转换
进程的三态模型按进程在执行过程中的不同情况至少要定义三种状态:运行(running)态:进程占有处理器正在运行的状态。 进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态; 在多处理机系统中,则有多个进程处于执行状态。就绪(ready)态:进程具备运行条件,等待系统分配处理器以便运行的状态。 当进程已分配到除CPU以外的所有...原创 2013-04-28 18:57:58 · 4290 阅读 · 0 评论 -
[MFC]获取线程退出码
实例——获取线程退出码1.添加两个CWinThread子类CMyThread1,CMyThread2;右击添加类-->选择MFC类-->类名:CMyThread1,CMyThread2;基类:CWinThread-->完成// MyThread1.cpp : 实现文件BOOL CMyThread1::InitInstance(){ // TODO: 在此执行任意逐线程初始化 Afx原创 2013-04-28 18:46:20 · 2673 阅读 · 1 评论 -
[MFC]多任务线程
实例——多任务线程其头文件关键代码:// MultiTestThreadDlg.h : 头文件#define WM_MSG WM_USER+1class CMultiTestThreadDlg;typedef struct THREAD_PARAM{ CMultiTestThreadDlg* pDlg; int nIndex;}_THREAD_PARAM;UINT Thre原创 2013-04-27 20:21:08 · 1586 阅读 · 0 评论 -
[MFC]MFC线程
概述工作者线程:一般没有界面,处理后台耗时的操作。使用过程:1.定义线程函数 2.调用AfxBeginThread()函数,指定线程函数用户界面线程:可以拥有自己的窗口界面,能够对用户的输入和事件做出相应。使用过程:1.定义一个CWinThread类的子类 2.调用AfxBeginThread()函数,指定线程类实例1.创建MFC基于对话框的工程MFCThread,以后全部默认原创 2013-04-12 20:52:43 · 1621 阅读 · 0 评论 -
[Win32基础]线程同步概述
线程:需要同步对象在某些时候进行同步操作。基本原理线程同步机制是为各线程能够协同工作而设计的。同步是唯一保证共享数据持久的方法。在同步过程中,两最重要的概念是同步对象(Mutex,Semaphore,Event,CriticalSection)和等待函数((WaitForSingleObject(),WaitForMultipleObjects())。同步对象是内存中的变量,你可以像访原创 2012-12-25 19:09:22 · 914 阅读 · 0 评论 -
[Win32基础]同步对象
同步对象 /************************************************************************//* 同步对象(Mutex)互斥对象具有的机制:如果互斥对象没有被任何线程拥有,那么它是"标记的",如果被一个线程所拥有,那么它是"未标志的";任何一个线程获得原创 2012-12-25 21:10:21 · 1209 阅读 · 0 评论 -
[Win32基础]等待函数
等待函数/************************************************************************//* 等待单个对象函数WaitForSingleObject() DWORD WaitForSingleObject( //功能等待单个对象,如果对象置位,则返回原创 2012-12-26 20:19:23 · 1214 阅读 · 0 评论 -
[Win32基础]多线程相关概念
同时性:指两个或两个以上事件在同一时刻发生。并发性:指两个或两个以上事件在同一时间间隔发生。进程是操作系统资源分配的单位。线程是操作系统执行的单位。同一进程中的两段代码不能同时执行,除非引入线程。为什么要引入线程?进程与进程之间的通信时十分慢的(网络编程)。因为进程管理分配很多资源,所以转换起来很慢,就这样线程产生了,它是比进程更小的单位。一个进程中只要有一个或多个线程,每个线原创 2012-12-24 23:40:42 · 964 阅读 · 0 评论