
多线程
文章平均质量分 82
jxhgh
这个作者很懒,什么都没留下…
展开
-
秒杀多线程第十一篇 读者写者问题
与上一篇《秒杀多线程第十篇 生产者消费者问题》的生产者消费者问题一样,读者写者也是一个非常著名的同步问题。读者写者问题描述非常简单,有一个写者很多读者,多个读者可以同时读文件,但写者在写文件时不允许有读者在读文件,同样有读者在读文件时写者也不去能写文件。上面是读者写者问题示意图,类似于生产者消费者问题的分析过程,首先来找找哪些是属于“等待”情况。第一.写者要等到没有读者时才能去写文件。转载 2015-02-12 12:33:19 · 259 阅读 · 0 评论 -
秒杀多线程第三篇 原子操作 Interlocked系列函数
上一篇《多线程第一次亲密接触 CreateThread与_beginthreadex本质区别》中讲到一个多线程报数功能。为了描述方便和代码简洁起见,我们可以只输出最后的报数结果来观察程序是否运行出错。这也非常类似于统计一个网站每天有多少用户登录,每个用户登录用一个线程模拟,线程运行时会将一个表示计数的变量递增。程序在最后输出计数的值表示有今天多少个用户登录,如果这个值不等于我们启动的线程个数,那显转载 2015-02-12 11:26:05 · 359 阅读 · 0 评论 -
秒杀多线程第二篇 多线程第一次亲密接触 CreateThread与_beginthreadex本质区别
本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beginthreadex到底有什么区别,在实际的编程中到底应该使用CreateThread还是_beginthreadex? 使用多线程其实是非常容易的,下面这个程序的主线程会创建了一个子线程并等转载 2015-02-12 11:10:52 · 299 阅读 · 0 评论 -
秒杀多线程第十五篇 关键段,事件,互斥量,信号量的“遗弃”问题
秒杀多线程第十五篇 关键段,事件,互斥量,信号量的“遗弃”问题在《秒杀多线程第九篇 经典线程同步总结 关键段 事件 互斥量 信号量》中对经典多线程同步互斥问题进行了回顾和总结,这篇文章对Windows系统下常用的线程同步互斥机制——关键段、事件、互斥量、信号量进行了总结。有网友问到互斥量能处理“遗弃”问题,事件和信号量是否也能处理“遗弃”问题。因此本文将对事件和信号量作个试验,看看事件和信号量转载 2015-02-12 12:45:41 · 356 阅读 · 0 评论 -
秒杀多线程第十四篇 读者写者问题继 读写锁SRWLock
在《秒杀多线程第十一篇读者写者问题》文章中我们使用事件和一个记录读者个数的变量来解决读者写者问题。问题虽然得到了解决,但代码有点复杂。本篇将介绍一种新方法——读写锁SRWLock来解决这一问题。读写锁在对资源进行保护的同时,还能区分想要读取资源值的线程(读取者线程)和想要更新资源的线程(写入者线程)。对于读取者线程,读写锁会允许他们并发的执行。当有写入者线程在占有资源时,读写锁会让其它写入者线程和转载 2015-02-12 12:39:10 · 314 阅读 · 0 评论 -
秒杀多线程第五篇 经典线程同步 关键段CS
上一篇《秒杀多线程第四篇 一个经典的多线程同步问题》提出了一个经典的多线程同步互斥问题,本篇将用关键段CRITICAL_SECTION来尝试解决这个问题。本文首先介绍下如何使用关键段,然后再深层次的分析下关键段的实现机制与原理。关键段CRITICAL_SECTION一共就四个函数,使用很是方便。下面是这四个函数的原型和使用说明。 函数功能:初始化函数原型:voidIni转载 2015-02-12 11:38:19 · 357 阅读 · 0 评论 -
秒杀多线程第四篇 一个经典的多线程同步问题
上一篇《秒杀多线程第三篇原子操作 Interlocked系列函数》中介绍了原子操作在多进程中的作用,现在来个复杂点的。这个问题涉及到线程的同步和互斥,是一道非常有代表性的多线程同步问题,如果能将这个问题搞清楚,那么对多线程同步也就打下了良好的基础。程序描述:主线程启动10个子线程并将表示子线程序号的变量地址作为参数传递给子线程。子线程接收参数 -> sleep(50) ->全局变量转载 2015-02-12 11:33:24 · 302 阅读 · 0 评论 -
秒杀多线程第十篇 生产者消费者问题
继经典线程同步问题之后,我们来看看生产者消费者问题及读者写者问题。生产者消费者问题是一个著名的线程同步问题,该问题描述如下:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个具有多个缓冲区的缓冲池,生产者将它生产的产品放入一个缓冲区中,消费者可以从缓冲区中取走产品进行消费,显然生产者和消费者之间必须保持同步,即不允许消费者到一个空的缓冲区转载 2015-02-12 12:29:04 · 406 阅读 · 0 评论 -
秒杀多线程第七篇 经典线程同步 互斥量Mutex
前面介绍了关键段CS、事件Event在经典线程同步问题中的使用。本篇介绍用互斥量Mutex来解决这个问题。互斥量也是一个内核对象,它用来确保一个线程独占一个资源的访问。互斥量与关键段的行为非常相似,并且互斥量可以用于不同进程中的线程互斥访问资源。使用互斥量Mutex主要将用到四个函数。下面是这些函数的原型和使用说明。第一个CreateMutex函数功能:创建互斥量(注意与事件Eve转载 2015-02-12 11:54:35 · 330 阅读 · 0 评论 -
秒杀多线程第九篇 经典线程同步总结 关键段 事件 互斥量 信号量
前面《秒杀多线程第四篇一个经典的多线程同步问题》提出了一个经典的多线程同步互斥问题,这个问题包括了主线程与子线程的同步,子线程间的互斥,是一道非常经典的多线程同步互斥问题范例,后面分别用了四篇《秒杀多线程第五篇经典线程同步关键段CS》《秒杀多线程第六篇经典线程同步事件Event》《秒杀多线程第七篇经典线程同步互斥量Mutex》《秒杀多线程第八篇经典线程同步信号量Semaphore》转载 2015-02-12 12:25:26 · 399 阅读 · 0 评论 -
秒杀多线程第十六篇 多线程十大经典案例之一 双线程读写队列数据
本文配套程序下载地址为:http://download.youkuaiyun.com/detail/morewindows/5136035转载请标明出处,原文地址:http://blog.youkuaiyun.com/morewindows/article/details/8646902 在《秒杀多线程系列》的前十五篇中介绍多线程的相关概念,多线程同步互斥问题《秒杀多线程第四篇一个经典的多线程同步问题》及解决转载 2015-02-12 12:50:09 · 468 阅读 · 0 评论 -
秒杀多线程第八篇 经典线程同步 信号量Semaphore
前面介绍了关键段CS、事件Event、互斥量Mutex在经典线程同步问题中的使用。本篇介绍用信号量Semaphore来解决这个问题。首先也来看看如何使用信号量,信号量Semaphore常用有三个函数,使用很方便。下面是这几个函数的原型和使用说明。第一个CreateSemaphore函数功能:创建信号量函数原型:HANDLECreateSemaphore( LPS转载 2015-02-12 12:20:03 · 338 阅读 · 0 评论 -
秒杀多线程第六篇 经典线程同步 事件Event
上一篇中使用关键段来解决经典的多线程同步互斥问题,由于关键段的“线程所有权”特性所以关键段只能用于线程的互斥而不能用于同步。本篇介绍用事件Event来尝试解决这个线程同步问题。首先介绍下如何使用事件。事件Event实际上是个内核对象,它的使用非常方便。下面列出一些常用的函数。第一个CreateEvent函数功能:创建事件函数原型:HANDLECreateEvent( L转载 2015-02-12 11:48:14 · 374 阅读 · 0 评论