线程
关于线程的知识。
WaitFoF
没有太晚的开始,不如就从今天行动。
总有一天,那个一点一点可见的未来,会在你心里,也在你的脚下慢慢清透。
生活,从不亏待每一个努力向上的人。
展开
-
【Window】线程中的几种锁
第一节:【Window】创建线程的3种方式第二节:【Window】线程同步概述第三节:【Window】线程同步方式1——临界区(关键代码段)第四节:【Window】线程同步方式2——互斥量第五节:【Window】线程同步方式3——事件第六节:【Window】线程同步方式4——信号量第七节:【Window】线程同步方式4——信号量第八节:【Window】互斥锁——Mutex,lock_guard,unique_lock线程之间的锁有:互斥锁条件锁自旋锁读写锁递归锁一般而言,锁原创 2020-12-25 16:45:00 · 977 阅读 · 0 评论 -
【Window】互斥锁——Mutex,lock_guard,unique_lock
文章目录1 互斥锁1.1 基本概念1.2 互斥锁的特点1.3 互斥锁的使用1.3.1 lock()和unlock()1.3.2 try_lock_for()1.3.3 使用1.3 std::lock_guard——Mute的优秀辅助1.4 std::unique_lock函数模板1.4.1 unique_lock构造参数1.4.2 unique_lock的成员函数1 互斥锁1.1 基本概念在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。比如说,同一个文件,可能一个线程会对其进行写操作,原创 2020-12-25 16:42:28 · 635 阅读 · 0 评论 -
MFC实战篇——线程的创建和多线程简单示例
文章目录一、基本概念1.1 进程1. 程序和进程2. 进程组成3. 进程的组成1.2 线程1. 线程组成2. 线程运行3. 单线程程序和多线程程序二、线程创建函数2.1 声明2.2 参数三、简单多线程实例四、线程同步4.1 火车站售票模拟程序4.2 多线程程序容易出现的问题4.3 利用互斥对象实现线程同步1. CreateMutex函数2. ReleaseMutex函数3. WaitForSingleObject函数一、基本概念1.1 进程1. 程序和进程程序是计算机指令的集合,它以文件的形式存储在原创 2020-09-17 21:52:26 · 3030 阅读 · 3 评论 -
Socket-tcp-两台主机间多线程简单通信
1、socket中TCP三次握手tcp建立连接要进行“三次握手”,即交换三个分组。大致流程如下:第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(...原创 2018-11-03 17:40:59 · 2724 阅读 · 1 评论 -
《C++》基础入门——多线程:一对一聊天实例
并行和并发并行同一时间段内交替运行多个进程(线程)在操作系统中是指,一组程序按独立异步的速度执行,不等于时间上的重叠(同一个时刻发生)。并行也指8位数据同时通过并行线进行传送,这样数据传送速度大大提高,但并行传送的线路长度受到限制,因为长度增加,干扰就会增加,数据也就容易出错。对于单核计算机操作系统中的并行,指的是同时存在于内存中的多道作业都处于运行状态。实际上都是宏观上并行,微观上...原创 2018-11-01 10:18:25 · 1081 阅读 · 0 评论 -
《C++》基础入门——四种线程同步(或互斥)方式小结
什么是线程同步和互斥同步就是协同步调,按预定的先后次序进行运行。如:你说完,我再说。这里的同步千万不要理解成那个同时进行,应是指协同、协助、互相配合。线程同步是指多线程通过特定的设置(如互斥量,事件对象,临界区)来控制线程之间的执行顺序(即所谓的同步)也可以说是在线程之间通过同步建立起执行顺序的关系,如果没有同步,那线程之间是各自运行各自的!线程互斥是指对于共享的进程系统资源,在各单个线程访...原创 2018-11-01 19:34:31 · 1119 阅读 · 0 评论 -
【Window】线程同步方式4——信号量
1 信号量信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。为了完成这个过程,需要创建一个信号量VI,然后将Acquire Semaphore VI以及Release Semaphore VI分别放置在每个关键代码段的首末端。确认这些信号量VI引用的是初始创建的信号量原创 2020-12-23 17:13:28 · 3046 阅读 · 0 评论 -
【Window】线程同步方式3——事件
文章目录1 事件2 信号量包含的几个操作原语1)CreateEvent2)OpenEvent3)SetEvent4)ResetEvent5)WaitForSingleObject6)事件的清理与销毁3 事件说明4. 举例1 事件事件对象通过通知操作的方式来保持线程的同步,并且可以实现不同进程中的线程同步操作。事件(Event)是WIN32提供的最灵活的线程间同步方式,事件可以处于激发状态(signaled or true)或未激发状态(unsignal or false)。根据状态变迁方式的不同,事件原创 2020-12-23 13:54:48 · 956 阅读 · 1 评论 -
【Window】线程同步方式2——互斥量
文章目录1 互斥量(Mutex)2 互斥量包含的几个操作原语1)CreateMutex()2) OpenMutex()3) ReleaseMutex()4) WaitForSingleObject/WaitForMultipleObjects5)CloseHandle()3 应用与举例1 互斥量(Mutex)在编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。互斥量跟临界区很相似,只有拥有互原创 2020-12-24 14:04:07 · 885 阅读 · 2 评论 -
【Window】线程同步方式1——临界区(关键代码段)
文章目录1 临界区1.1 简介1.2 程序调度法则1.3 线程同步问题2 临界区操作原语2.1 定义全局的锁CRITICAL_SECTION2)InitializeCriticalSection3)EnterCriticalSection和LeaveCriticalSection4) DeleteCriticalSection3 应用和举例1 临界区1.1 简介临界区,也称为关键代码段,工作在用户方式下。它是指一个小代码段,在代码能够执行前,它必须独占对某些资源的访问权。临界区(Critical S原创 2020-12-23 22:32:28 · 2095 阅读 · 0 评论 -
【Window】线程同步概述
线程同步一般有三种实现方法:互斥对象(CreateMutex),事件对象(CreateEvent),关键代码段(CriticalSection)互斥对象创建互斥#ifdef UNICODE#define CreateMutex CreateMutexW#else#define CreateMutex CreateMutexA#endif // !UNICODEH...原创 2018-11-01 17:45:28 · 2655 阅读 · 0 评论 -
【Window】创建线程的3种方式
线程的状态线程有挂起状态、执行状态、阻塞状态和等待状态。下面分别介绍:挂起状态:线程创建后并没有直接执行或是调用函数挂起了线程。被挂起了的线程没有执行的能力,只有调用启动函数了之后才能执行。执行状态:在线程的时间片内,拥有CPU资源的时候,这是,线程便开始执行。阻塞状态:由于进行大量输入输出操作或发生执行错误时,线程失去执行状态,只有等待问题解除之后,线程才能进入等待状态。等待状态:...原创 2018-11-01 12:43:41 · 8805 阅读 · 1 评论