并行编程
来灵
抬头走路,低头做事。
展开
-
Linux平台上用C++实现多线程互斥锁
在上篇用C++实现了Win32平台上的多线程互斥锁,这次写个Linux平台上的,同样参考了开源项目C++ Sockets的代码,在此对这些给开源项目做出贡献的斗士们表示感谢! 下边分别是互斥锁类和测试代码,已经在Fedora 13虚拟机上测试通过。Lock.h#ifndef _Lock_H#define _Lock_H#include //锁接口类clas原创 2011-12-09 20:14:12 · 16524 阅读 · 5 评论 -
Comparing Two High-Performance I/O Design Patterns
原文链接This article investigates and compares different design patterns of high performance TCP-based servers. In addition to existing approaches, it proposes a scalable single-codebase, mu原创 2014-03-28 17:49:27 · 1389 阅读 · 0 评论 -
Linux平台用C++封装线程读写锁
在Linux平台上已经有现成的线程读写锁pthread_rwlock_t以及相关API,现将这些API封装成与Win32平台上相同的接口,以便于编写跨平台程序。这些API包括pthread_rwlock_init,pthread_rwlock_rdlock,pthread_rwlock_tryrdlock,pthread_rwlock_wrlock,pthread_rwlock_trywrlock原创 2011-12-29 20:55:26 · 7263 阅读 · 0 评论 -
在Win32下用C++实现多线程读写锁
读写锁实际是一种特殊的自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。这种锁相对于自旋锁而言,能提高并发性,因为在多处理器系统中,它允许同时有多个读者来访问共享资源,最大可能的读者数为实际的逻辑CPU数。写者是排他性的,一个读写锁同时只能有一个写者或多个读者(与CPU数相关),但不能同时既有读者又有写者。 现在Win32的API原创 2011-12-28 21:27:40 · 10369 阅读 · 2 评论 -
用C++实现Win32事件对象,同步线程
在Win32环境下编写多线程应用程序,经常要用到事件对象Event,来进行线程同步。与其相关的一组API包括:CreateEvent,SetEvent,ResetEvent,WaitForSingleObject,和CloseHandle。关于这些API的功能以及参数意义等这里就不多说了。下边,我封装了一个事件对象类,以及测试代码。已由本人在VS2005环境下编译,测试通过。MyEvent.h原创 2011-12-16 19:33:14 · 4840 阅读 · 1 评论 -
将Linux的信号量sem_t封装成事件对象
将信号量sem_t相关的一组API封装成Win32平台上的事件对象类之后,在Linux平台上就可以像使用事件对象那样,方便地进行线程同步了。class CEventImpl{protected: /* 创建匿名信号量 `bAutoReset true 人工重置 false 自动重置 */ CEventImpl(bool manualReset);原创 2011-12-24 20:51:54 · 4013 阅读 · 0 评论 -
Linux平台用C++实现信号量,同步线程
使用Linux平台上现有的信号量sem_t相关的一组API,可以方便地进行线程同步。现在用pthread_mutex_t和pthread_cond_t相关的一组API实现信号量机制。这组API包括:pthread_mutex_init,pthread_cond_init,pthread_mutex_lock,pthread_cond_signal,pthread_mutex_unlock,pthr原创 2011-12-23 22:25:10 · 5210 阅读 · 0 评论 -
用C++封装Win32信号量,同步线程
在Win32环境下编写多线程应用程序,也会常用到信号量Semaphore来进行线程同步。与其相关的一组API包括:CreateSemaphore,ReleaseSemaphore,WaitForSingleObject,和CloseHandle。关于这些API的功能以及参数意义等这里就不多说了。下边,我封装了一个信号量类,以及测试代码。已由本人在VS2005环境下编译,测试通过。MySemap原创 2011-12-20 21:07:01 · 4695 阅读 · 0 评论 -
互斥对象锁和临界区锁性能比较
在Win32平台上进行多线程编程,常会用到锁。下边用C++实现了互斥对象(Mutex)锁和临界区(CRITICAL_SECTION)锁,以加深理解和今后方便使用。代码已在VS2005环境下编译测试通过。Lock.h#ifndef _Lock_H#define _Lock_H#include //锁接口类class ILock{public: virtual ~ILock原创 2011-12-10 22:54:26 · 14860 阅读 · 9 评论 -
用C++实现多线程Mutex锁(Win32)
本文目的:用C++和Windows的互斥对象(Mutex)来实现线程同步锁。 准备知识:1,内核对象互斥体(Mutex)的工作机理,WaitForSingleObject函数的用法,这些可以从MSDN获取详情; 2,当两个或更多线程需要同时访问一个共享资源时,系统需要使用同步机制来确保一次只有一个线程使用该资源。Mutex 是同步基元,它只向一个线程授予对共享资源的独占访问权。如果一个线原创 2011-12-07 20:38:57 · 30196 阅读 · 8 评论 -
Linux平台用C++实现事件对象,同步线程
前文在Win32平台上用C++实现了事件对象Event,对线程进行同步,以达到期望目的。这次在Linux平台上实现与之类似的事件对象。与其相关的一组API包括:pthread_mutex_init,pthread_cond_init,pthread_mutex_lock,pthread_cond_wait,pthread_mutex_unlock,pthread_cond_broadcast,pt原创 2011-12-17 19:44:46 · 7051 阅读 · 1 评论 -
如何避免使用CreateThread函数导致的内存泄露
点击打开链接前阵子翻了翻候杰老师翻译的那本Win32多线程的书,老书了,很经典。 书里提到,当使用C/C++的时候,有些情况下CreateThread会导致内存泄露,建议使用_beginthread和_beginthreadex。这种泄露网上也有不少帖子在讲。 事实上,这种泄露的可能是存在的,但是只要稍微注意一下,是可以找到方法避免的。原创 2015-06-09 13:39:01 · 4823 阅读 · 0 评论