现在位置: 首页 > 多线程编程
2013-11-27 00:05 工业·编程 ⁄ 共 2606字 暂无评论
      实话实说,对于VC多线程编程我只是一知半解。虽然也做过很多多线程的应用,但也都是很简单的,没有什么过多的控制。还是有一次看一个帖子讨论类似杀毒软件的线程控制方式,当时我也参与了一下,而且为了挑战一下自己我按着自己的想法写了一个实现。既然东西都做出来了,想了想是不是可以把那个例子共享出来,和大家讨论一下,同时也是一个交流学习的过程。      &#...
阅读全文
一、SRWLock锁的工作原理 SRWLock锁的目的和关键段相同:对一个资源进行保护,不让其他线程访问它。但是,与关键段不同的是:SRWLock锁允许我们区分哪些想要读取资源的值的线程(读取者线程)和想要更新资源的值的线程(写入者线程)。让所有的读取者线程在同一时刻访问共享资源应该是可行的,这是因为读取资源并不存在破坏资源的风险。只有当写入者线程想要对资源进行更新的时候才需要进行同步。在这种情况下:写入者线程独占...
阅读全文
张静盛老师目前在盛大网络从事技术研究工作,他从2005年开始担任知名技术社区Windows编程版主,网名“北极星”被很多技术爱好者所熟知。2008年6月份,张静盛推出他的第一本个人技术图书《Windows编程循序渐进》,上市一个月来取得了很好的销售成绩。 在一个多小时的在线沟通过程中,张静盛老师回答了网友数十个经典问题,以下为聊天实录,略有整理。 进程间通信基本知识 主持人:什么是进程间通信?常见有哪些进程间通信方式有哪...
阅读全文
2013-09-12 23:33 工业·编程 ⁄ 共 530字 暂无评论
经常看到一些招聘上要求应聘者必须熟练掌握多线程,而对于我这个着实的菜鸟来说多线程这个概念虽然经常听到,但是在实际操作中用的比较少。 进程的定义:当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。 线程的定义:线程,有时被称为轻量级进程,是程序执行流的最小单元。 多线程定义:线程是程序中一个单一的顺序控制流程。在单个程序中同时...
阅读全文
    应用程序之间的数据交换(互相通讯)一直是困扰广大程序员的难题,尽管已经出现了各式各样的解决方案,但迄今为止没有哪一种方案是完美无缺的。因此,只有学习并了解了它们的优缺点后,才能在特定的情况下选择最佳方案,以满足最终的要求。 1、共享 在硬盘上建立一个文件,一个应用程序往该文件里写数据(可以不关闭文件,但必须刷新缓冲区),另一个应用程序以共享方式打开这个文件并读取其中的内容,...
阅读全文
2013-07-27 23:59 工业·编程 ⁄ 共 722字 暂无评论
一、四种同步方法 互斥量、临界段、事件、信号量 二、同步的原因 我们之所以在线程之间进行同步,是因为: 1、由于线程间竞争共享资源。 2、为完成某个任务而需要协作。 总的来说就是因为竞争和协作。 三、Win32 API——API函数——MFC封装 CSyncObject同步对象:CEvent、CSemaphore、CMutex、CCriticalSetion 同步访问对象:CMultiLock、CSingleLock 四、异同 1、互斥量、事件、信号量:内核对象,可用于进程之间同步 临界段:只能...
阅读全文
2013-07-27 23:57 工业·编程 ⁄ 共 1668字 暂无评论
一、具体实现: CSemaphore::CSemaphore(LONG lInitialCount,LONG lMaxCount,LPCTSTR pstrName, LPSECURTY_ATTRIBUTES lpsaAttribute):CSyncObject(pstrName) CSemaphore::~CSemaphore() _AFXMT_INLINE BOOL CSemaphore::Unlock() BOOL CSemaphore::Unlock(LONG lCount,LPCTSTR lpPrevCount) 二、关于带参数的 Lock()函数的使用(例子) 用一个二维数组模拟三个串行端口 在这个例子用到三个对象:信号量,用于对串行口的资源...
阅读全文
2013-07-27 23:56 工业·编程 ⁄ 共 1350字 暂无评论
一、关于信号量 1、在信号量中有一个内置的计数值,用于对资源进行计数;同时它通过内置的互斥机制保证在有多个线程试图对计数值进行修改时,在任一时刻只有一个线程对计数值进行修改。 2、信号量的两个核心操作是Up操作(提高计数值)和Down操作(降低计数值): 1)Down操作: 检查信号量的计数值是否大于零 1》若大于零,信号量的计数值减一(即用掉了一个信号量计数了),线程继续运行; 2》若等于零(也就是线程不能获得所...
阅读全文
2013-07-27 23:54 工业·编程 ⁄ 共 1497字 暂无评论
一、实现 CEvent::CEvent(BOOL bInitiallyOwn,BOOL bManualReset,LPCTSTR pstrName, LPSECURTY_ATTRIBUTES lpsaAttribute):CSyncObject(pstrName) CEvent::~CEvent() BOOL CEvent::Unlock() 在文件AFXMT.inl中实现了其他几个函数,为了提高效率,它们被定义为内联函数: AFXMTINLINE BOOL CEvent::SetEvent() AFXMTINLINE BOOL CEvent::PulseEvent() AFXMTINLINE BOOL CEvent::ResetEvent() CEvent没有重载Lock(),它继承了CSync...
阅读全文
2013-07-27 23:53 工业·编程 ⁄ 共 2567字 暂无评论
一、Event的有关函数 CreateEvent()  创建一个事件 OpenEvent()  打开一个已经创建的事件:使多个进程打开同一个事件对象的句柄, 从而达到进程之间同步的目的。 它只有在指定名称的事件对象已在其他地方被创建时才调用成功 SetEvent()  触发一个事件:将事件置为有信号状态 ResetEvent()  复位一个事件:将一个事件重置为无信号状态 PulseEvent()  触发并重置一个事件:使所有等待该事件的线程运行,...
阅读全文