![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程编程
minsanyuan
这个作者很懒,什么都没留下…
展开
-
多线程队列的算法优化
<br />原文: http://www.parallellabs.com/2010/10/25/practical-concurrent-queue-algorithm/<br /> 多线程队列(Concurrent Queue)的使用场合非常多,高性能服务器中的消息队列,并行算法中的Work Stealing等都离不开它。对于一个队列来说有两个最主要的动作:添加(enqueue)和删除(dequeue)节点。在一个(或多个)线程在对一个队列进行enqueue操作的同时可能会有一个(或多个)线程对这个队列转载 2010-12-31 16:39:00 · 692 阅读 · 0 评论 -
Linux下线程同步对象(2)——读写锁
上文介绍了Linux下线程同步对象——互斥量,本文介绍另外Linux下同步对象——读写锁。 如果多个线程同时读资源,则不会发生竞争关系,也不会出现资源的不一致性,所以读资源的时候不需要同步对象保护。但是如果写某个资源的时候,必须要进行同步保护,否则将会出现不一致性。在上文的互斥量中,不管读写都加锁,这样对于读资源操作非常多,但写资源非常少的情况下,效率会比较低。Linux提供了读写锁来解决这种情况下的效率问题。 读写锁分为读锁定状态和写锁定状态,多个线程可以同时获得读锁定状态锁,进行各自的读转载 2011-01-10 15:34:00 · 858 阅读 · 1 评论 -
Linux下线程同步对象(1)——互斥量
进程是Linux资源分配的对象,Linux会为进程分配虚拟内存(4G)和文件句柄等资源,是一个静态的概念。线程是CPU调度的对象,是一个动态的概念。一个进程之中至少包含有一个或者多个线程。这些线程共享该进程空间的内存和文件句柄资源,多个线程竞争地获得这些资源。为了防止多个线程访问资源的不一致性,多线程编程一个很重要的任务就是控制好线程同步。本文简单介绍一下Linux的同步对象和使用时的一些注意事项。1、互斥量(Mutex) 互斥量本质上讲是一把锁,该锁保护一个或者一些资源(内存或者文件句柄等数据)。转载 2011-01-10 15:33:00 · 554 阅读 · 0 评论 -
Linux下线程同步对象(3)——条件变量
<br /><br />在前面两篇文章中介绍了Linux下的互斥量和读写锁两种线程同步对象。这两种线程同步对象都是用来保护特定资源(内存,文件句柄等)的。假如某个线程需要等待系统处于某种状态下才能继续执行,Linux为了解决这种问题引入了条件变量这种线程同步对象,本文简要介绍一下条件变量。<br /> 条件变量必须要与互斥量一起使用时,允许线程以无竞争的方式等待特定条件的发生。线程在等待条件变量和通知条件变量之前都必须要先把保护条件变量的互斥量加锁。<br /> 和其他线程同步对象一样,条转载 2011-01-10 15:35:00 · 617 阅读 · 0 评论