多线程
stormbjm
这个作者很懒,什么都没留下…
展开
-
关键段Critical Section
本文首先介绍下如何使用关键段,然后再深层次的分析下关键段的实现机制与原理。关键段CRITICAL_SECTION一共就四个函数,使用很是方便。下面是这四个函数的原型和使用说明。 函数功能:初始化函数原型:void InitializeCriticalSection(LPCRITICAL_SECTIONlpCriticalSection);函数说明:定转载 2013-04-13 11:09:46 · 1066 阅读 · 0 评论 -
GOMP_CPU_AFFINITY
Description:Binds threads to specific CPUs. The variable should contain a space-separated or comma-separated list of CPUs. This list may contain different kinds of entries: either single CPU numbers i转载 2013-12-05 09:33:56 · 10771 阅读 · 0 评论 -
OpenMP中的数据处理子句
OpenMP中的数据处理子句相关文档连接:多核编程中的任务随机竞争模式的概率分析多核编程中的任务分组竞争模式 多核编程中的负载平衡难题多核编程中的锁竞争难题多核编程的几个难题及其应对策略(难题一)OpenMP并行程序设计(二) OpenMP并行程序设计(一) 双核CPU上的快速排序效率 OpenMP创建线程中的锁及原转载 2013-10-30 19:49:07 · 822 阅读 · 0 评论 -
Pthreads并行编程之spin lock与mutex性能对比分析
POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API。线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用就是用Pthreads提供的锁机制(lock)来对多个线程之间共 享的临界区(Critical Section)进行保护(另一种常用的同步机制是barrier)。Pthreads提供了多种锁机转载 2013-07-05 08:50:08 · 795 阅读 · 0 评论 -
OpenMP(四)线程同步之互斥锁函数
线程同步之互斥锁函数前文介绍了互斥锁同步的两种方法:atomic和critical,本章介绍OpenMP提供的互斥锁函数。互斥锁函数类似于Windows、Linux下的mutex。 1. 互斥锁函数 函数声明 功能 void omp_init_转载 2013-07-19 21:53:19 · 9298 阅读 · 0 评论 -
OpenMP(二)
数据的共享和私有化1. 引言 在并行区域内,若多个线程共同访问同一个存储单元,并且至少会有一个线程更新数据单元中的内容时,会发生数据竞争。本节的数据共享和私有化对数据竞争做一个初步探讨,后续会涉及同步、互斥的内容。 2. 并行区域内的变量的共享和私有 除了以下三种情况外,并行区域中的所有变量都是共享的: > 并行区域中定义的变量 > 多个线程用来转载 2013-07-19 21:49:26 · 927 阅读 · 0 评论 -
OpenMP (一)
项目背景: 为了提升项目的运行效率,考虑多线程技术。最近OpenMP技术很热,咱也凑凑热闹,也为了充分发挥电脑硬件的能力。 硬件: 酷睿2双核 2.2GHz 3G 内存 软件: Visual Studio 2010 旗舰版 Windows 7 旗舰版 32bit 难点: 由于多个线程操作同一个文件,很转载 2013-07-19 21:48:09 · 862 阅读 · 0 评论 -
OpenMP(五)线程的调度优化
线程的调度优化1. 引言 通过前边的介绍,知道了并行区域,默认情况下会自动生成与CPU个数相等的线程,然后并行执行并行区域中的代码。对于并行区域中的for循环有特殊的声明方式,这样不同的线程可以分别运行for循环变量的不同部分。通过锁同步(atomic、critical、mutex函数)或事件同步(nowait、single、section、master)来实现并行区域的同步控制。转载 2013-07-19 21:54:22 · 2425 阅读 · 0 评论 -
OpenMP(三) 线程同步
OpenMP --- 线程同步1. 引言 在OpenMP中,线程同步机制包括互斥锁同步机制和事件同步机制。 2. 互斥锁同步 互斥锁同步的概念类似于Windows中的临界区(CriticalSection)以及Windows和Linux中的Mutex以及VxWorks中的SemTake和SemGive(初始化时信号量为满),即对某一块代码操作进行保护,以保证同时只能转载 2013-07-19 21:51:12 · 2498 阅读 · 0 评论 -
OpenMP中的数据处理子句
相关文档连接:多核编程中的任务随机竞争模式的概率分析多核编程中的任务分组竞争模式 多核编程中的负载平衡难题多核编程中的锁竞争难题多核编程的几个难题及其应对策略(难题一)OpenMP并行程序设计(二) OpenMP并行程序设计(一) 双核CPU上的快速排序效率 OpenMP创建线程中的锁及原子操作性能比较10.1.1转载 2013-07-15 10:33:08 · 646 阅读 · 0 评论 -
深刻理解Linux进程间通信(IPC)
一个大型的应用系统,往往需要众多进程协作,进程(Linux进程概念见附1)间通信的重要性显而易见。本系列文章阐述了 Linux环境下的几种主要进程间通信手段,并针对每个通信手段关键技术环节给出详细实例。为达到阐明问题的目的,本文还对某些通信手段的内部实现机制进 行了分析。序linux 下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力A转载 2013-05-10 15:42:01 · 861 阅读 · 0 评论 -
线程同步
现在流行的进程线程同步互斥的控制机制,其实是由最原始最基本的4种方法实现的:1临界区:通过对多线程的串行化,来访问公共资源或一段代码,速度快,适合控制数据访问。 2互斥量:为协调共同对一个共享资源的单独访问而设计的。 3信号量:为控制一个具有有限数量,用户资源而设计。 4事件:用来通知线程有一些事件已发生,从而启动后继任务的开始。临界区(Critical Sec转载 2013-03-31 11:58:58 · 700 阅读 · 0 评论 -
互斥量Mutex
前面介绍了关键段CS、事件Event在经典线程同步问题中的使用。本篇介绍用互斥量Mutex来解决这个问题。互斥量也是一个内核对象,它用来确保一个线程独占一个资源的访问。互斥量与关键段的行为非常相似,并且互斥量可以用于不同进程中的线程互斥访问资源。使用互斥量Mutex主要将用到四个函数。下面是这些函数的原型和使用说明。第一个 CreateMutex函数功能:创建互斥量(注意与转载 2013-04-13 12:02:16 · 616 阅读 · 0 评论 -
事件Event
上一篇中使用关键段来解决经典的多线程同步互斥问题,由于关键段的“线程所有权”特性所以关键段只能用于线程的互斥而不能用于同步。本篇介绍用事件Event来尝试解决这个线程同步问题。首先介绍下如何使用事件。事件Event实际上是个内核对象,它的使用非常方便。下面列出一些常用的函数。 第一个 CreateEvent函数功能:创建事件函数原型:HANDLECr转载 2013-04-13 11:41:12 · 663 阅读 · 0 评论 -
生产者消费者问题
生产者-消费者问题是一个经典的进程同步问题,该问题最早由Dijkstra提出,用以演示他提出的信号量机制。在同一个进程地址空间内执行的两个线程。生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费。消费者线程从缓冲区中获得物品,然后释放缓冲区。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区。当消费者线程消费物品时,如果没有满的缓冲区,转载 2014-06-10 09:36:06 · 814 阅读 · 0 评论