2006年11月12日

想到Exchanger N parties的一种用法

一般来说,Exchanger都是一个Consumer,一个producer,在适当的时候互相交换,这样可以避免锁。

我想到Exchanger N parties的一种用法。如下:

最初N个都是producer,达到一定条件之后,进行交换。根据交换的结果重新确定角色,决定自己是consumer还是producer。

这样做的结果是,最初所有都是producer,之后一部分转变成consumer。并且由于consumer以及producer的速度不一样,而能够自动适应调整。


要注意的是,JDK 1.5中的Exchanger只支持2 parties,N parties时,N > 2会导致死锁。JDK 1.6中,Exchanger重写了,没有这个问题。

在JDK 1.5中要这样用的话,可以把JDK 1.6中Exchanger源码抄过来就是了。

posted @ 2006-11-12 22:30 温少 阅读(756) 评论(0) 编辑

Herb Sutter的一些观点

昨天就开始看这个PPT,看了几遍,对并发的前景有了更多的理解。

http://irbseminars.intel-research.net/HerbSutter.pdf


可以从他的网站上下载视频版本。

过去30年,主流软件开发一直忽略了并发。但是现在,并发时代要来了,因为我们的新电脑是并发的,软件开发将会迎来巨变。

现在买的电脑,是双核的,明年就会是4核,然后就是8核,16核,32核……,都是之后几年的事情,一切都不遥远!
1.JPG


很多服务器程序准备好了(也不完全是吧),而客户端程序还没有。
2.JPG


算法的时间复杂度改变了

3.JPG



盲人摸象
4.JPG



技术发展史
 

 

出现
进入主流
GUIs
1973 (Xerox Alto)
~1984-89 (Mac)
~1990-95 (Win3.x)
Objects
1967 (Simula)
~1993-98 (C++, Java)
Garbage Collection
1958 (Lisp)
~1995-2000 (Java)
Generic Types
1967 (Strachey)
~198x (US DoD, Ada) ~1995-2000 (C++)
Concurrency
1964 (CDC 6600)
~2007-12 (est.)


他的PPT中还讲述了Acitve Object、Future、Atomic之类的,VC提供特别语法支持。这也是老生常谈的咚咚了。

posted @ 2006-11-12 02:11 温少 阅读(786) 评论(0) 编辑