最新 | 最热门 | 最高评价

+0  解block层死锁

Tag: 操作系统 | block | 死锁 | flashcache | kernel
DongHao 发于 2012年12月27日 18:14 | 点击: 2768 | 展开摘要
把flashcache改为request-based后,虽然IO数量可以按比例控制了,但是作为”珍稀“资源的cache(通常是昂贵的固态硬盘或更昂贵的fusionio卡),也需要按例分配不同进程以不同的cache空间。近一个月我一直在忙着加这个功能。
新代码写完了,压力测试二十多个小时,出现了一个死锁:

<4>[11957.888102]  [<ffffffff814afa70>] ? nmi+0x20/0x30
<4>[119

查看全文: http://www.udpwork.com/item/8884.html

+1  并行编程中的“锁”难题

Tag: 并行编程 | 多核 | 多线程编程 | 死锁 | 线程同步 | 锁竞争
Guancheng (G.C.) 发于 2011年10月02日 10:11 | 点击: 2714 | 展开摘要
注:本文发表于《程序员》2011年第8期并行编程专栏,略有删改。

在并行程序中,锁的使用会主要会引发两类难题:一类是诸如死锁、活锁等引起的多线程Bug;另一类是由锁竞争引起的性能瓶颈。本文将介绍并行编程中因为锁引发的这两类难题及其解决方案。

1. 用锁来防止数据竞跑

在进行并行编程时,我们常常需要使用锁来保护共享变量,以防止多个线程同时对该变量进行更新时产生数据竞跑(Data Race)。所谓数据竞跑,是指当两个(或多个)线程同时对某个共享变量进行操作,且这些操作中至少

查看全文: http://www.udpwork.com/item/5988.html

+0  多线程程序常见Bug剖析(上)

Tag: 并行编程 | 原子操作 | 多核 | 多线程Bug | 死锁 | 线程同步
Guancheng (G.C.) 发于 2010年11月13日 22:59 | 点击: 2338 | 展开摘要
编写多线程程序的第一准则是先保证正确性,再考虑优化性能。本文重点分析多线程编程中除死锁之外的另两种常见Bug:违反原子性(Atomicity Violation)和违反执行顺序(Ordering Violation)。现在已经有很多检测多线程Bug的工具,但是这两种Bug还没有工具能完美地帮你检测出来,所以到目前为止最好的办法还是程序员自己有意识的避免这两种Bug。本文的目的就是帮助程序员了解这两种Bug的常见形式和常见解决办法。

1. 多线程程序执行模型

在剖析Bug之

查看全文: http://www.udpwork.com/item/3414.html

+0  多线程队列的算法优化

Tag: 并行编程 | 算法学习 | Algorithm | queue | 多线程编程 | 性能分析 | 死锁 | 线程安全
Guancheng (G.C.) 发于 2010年10月25日 00:52 | 点击: 3426 | 展开摘要
多线程队列(Concurrent Queue)的使用场合非常多,高性能服务器中的消息队列,并行算法中的Work Stealing等都离不开它。对于一个队列来说有两个最主要的动作:添加(enqueue)和删除(dequeue)节点。在一个(或多个)线程在对一个队列进行enqueue操作的同时可能会有一个(或多个)线程对这个队列进行dequeue操作。因为enqueue和dequeue都是对同一个队列里的节点进行操作,为了保证线程安全,一般在实现中都会在队列的结构体中加入一个队列

查看全文: http://www.udpwork.com/item/3160.html
|<<<1>>>| 一共1页, 4条记录