<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Herb Sutter的觀點(diǎn)

    Herb Sutter最近的一篇文章中如是說:“90年代,我們到處跟人叫講,什么是對象,什么是虛函數(shù),現(xiàn)在我們到處跟人說,什么是主動對象,什么是Future”,他還說,結(jié)構(gòu)編程、面向?qū)ο?,現(xiàn)在該輪到并發(fā)和并行了。

    記得在去年,Herb Sutter就寫文章預(yù)示并發(fā)時(shí)代的到來,主要是因?yàn)镃PU的主頻將不再會有以前那樣的增長速度,而將迎來多核時(shí)代。程序?qū)⑹强坎l(fā)來提高運(yùn)行效率。



    JDK 1.5 Concurrent包

    在傳統(tǒng)的多線程程序中,經(jīng)常會有:
    創(chuàng)建線程
    wait\notify
    重新發(fā)明輪子,例如BlockingQueue、Lock、Semaphore這樣的基本工具類。

    不恰當(dāng)?shù)某橄?,會?dǎo)致難以承受的復(fù)雜度,代碼錯誤多,常犯死鎖、lost notify之類,也很容易導(dǎo)致性能低下。我也有過這樣的經(jīng)歷,失敗的教訓(xùn)刻骨銘心。

    JDK 1.5 util.concurrent包提供了一系列工具類,其中一些類的使用,代表一些觀念的轉(zhuǎn)變,更好的抽象,優(yōu)雅的設(shè)計(jì)模式,會使多線程程序具有良好的結(jié)構(gòu)。

    使 用Excector、ScheduleExecutorService、Future、BlockingQueue等類搭建起來的程序,會使得多線程程序 有很清晰明了的結(jié)構(gòu)。其中的差別,似乎就象以前“非結(jié)構(gòu)化程序設(shè)計(jì)”到“結(jié)構(gòu)化程序設(shè)計(jì)”那樣的轉(zhuǎn)變,現(xiàn)在我們使用Future等設(shè)計(jì)模式,起到了同樣好 的效果。

    結(jié)構(gòu)化程序設(shè)計(jì),使用if/else、while、do...while、for、switch等結(jié)構(gòu),把程序組織的清晰易懂,更容易掌握,更少出錯。
    Executor、Future、Concurrent Collection等工具類、模式,使得并發(fā)程序結(jié)構(gòu)清晰化/模式化,更容易掌握,更少出錯,也更高效。

    隨著多核CPU的普及,摩爾定律逐步失效,并發(fā)程序設(shè)計(jì)將會是程序員要求掌握的基本技巧,就如同現(xiàn)在程序員要求掌握面向?qū)ο笠粯印?br>
    有幾個文檔值得一看的:

    javaone的幻燈片
    http://developers.sun.com/learning/javaoneonline/2005/coreplatform/TS-3423.pdf
    http://developers.sun.com/learning/javaoneonline/2005/coreplatform/TS-5807.pdf

    Doug Lea的文章
    http://gee.cs.oswego.edu/dl/papers/aqs.pdf

    上面的文檔只能給你一個介紹,最好的辦法還是通讀一遍JDK 1.5 utilconcurrent包的源碼,然后在實(shí)踐中,改變觀念,積累經(jīng)驗(yàn)。


    并發(fā)和網(wǎng)絡(luò)編程

    網(wǎng) 絡(luò)中,存在中心服務(wù)器,不同機(jī)器的交互,并發(fā)和異步是常見行為。網(wǎng)絡(luò)中的服務(wù)器,需要相應(yīng)大量的并發(fā),這種并發(fā)通常會是極端的并發(fā),操作系統(tǒng)提供一些特別 的API,例如select模型,poll,windows的完成端口等等。JDK在1.4之后支持nio,主要也是針對大并發(fā)的支持。

    C++的框架ACE,提供了跨平臺的線程、進(jìn)程、Future等API,并且提供了Reactor、Proactor等框架,使得能夠容易編寫跨平臺的并發(fā)網(wǎng)絡(luò)服務(wù)器。

    ACE框架的一個思想就是,使用ACE和模式消除復(fù)雜性。這一點(diǎn)和JDK 1.5 concurrent包提供的高級設(shè)計(jì)模式類的意圖是一致的。

    在《C++網(wǎng)絡(luò)編程》卷1和卷2中講述了一些模式,例如Half Sync/Aysnc vs Leader/Follow模式。這是ACE開發(fā)過程中的一些研究成果,我們查找ACE相關(guān)資料時(shí),會發(fā)現(xiàn)一些關(guān)于并發(fā)方面的論文。ACE也提供了Future。

    我才運(yùn)用ACE作了一些簡單的應(yīng)用,了解還不夠深入,不過覺得JDK concurrent包在并發(fā)設(shè)計(jì)模式方面,比ACE走到更遠(yuǎn)。


    今天,你使用Future了嗎?






    溫少 2006-11-10 03:23 發(fā)表評論


    文章來源:http://www.cnblogs.com/jobs/archive/2006/11/10/556063.html
    posted @ 2006-11-20 02:08 溫少的日志 閱讀(485) | 評論 (1)編輯 收藏
     
    并發(fā)程序設(shè)計(jì)的領(lǐng)域,有三個牛人

    Doug Lea (Java util.concurrent)
    Douglas C. Schmidt (ACE、POSA2)
    Herb Sutter (C++/CLI concurrent)


    Doug Lea

    Doug_Lea.jpg
    util.concurrent包的作者,JSR166規(guī)范的制定。圖書著作《Concurrent Programming in Java: Design Principles and Patterns》。在JDK 1.6的源碼中,還看到他修改的代碼(例如重寫Exchanger,修正N parters時(shí)死鎖的問題)。隨著JDK 1.5、1.6的普及推廣,他的思想,他的作品,都將產(chǎn)生極大的影響。


    Douglas C. Schmidt

    douglas.jpg
    他創(chuàng)造了ACE,一個流行開源跨平臺的C++網(wǎng)絡(luò)框架。他的圖書著作:
    《C++ Network Programming: Mastering Complexity Using ACE and Patterns》
    《C++ Network Programming: Systematic Reuse with ACE and Frameworks》
    《Pattern-Oriented Software Architecture: Patterns for Concurrent & Networked Objects》
    他的成果:
    Leader/Follow模式
    ACE Reacotr
    ACE Proactor
    雖然ACE中也包括Acitve Object、Future等,他的書中也講述了基于事件/基于任務(wù)的模型,但這些并非他的創(chuàng)造。

    Douglas C. Schmidt的成果是網(wǎng)絡(luò)、并發(fā)、跨平臺。 Douglas C. Schmidt創(chuàng)造輝煌的時(shí)刻已經(jīng)過去了。

    Herb Sutter

    hps-small.jpg.gif
    ISO C++標(biāo)準(zhǔn)委員會主席,微軟C++/CLI首席架構(gòu)師,Exceptional三卷書的作者,目前領(lǐng)導(dǎo)微軟的concur Project。從2005年開始,他一直發(fā)表一些預(yù)告并發(fā)時(shí)代來臨的文章。2005年,他代表Microsoft參加OOPSLA,主題就是關(guān)于C++ /CLI的并發(fā)。Herb Sutter是我極為敬仰的牛人!

    他的網(wǎng)站:
    http://www.gotw.ca/



    溫少 2006-11-10 13:09 發(fā)表評論


    文章來源:http://www.cnblogs.com/jobs/archive/2006/11/10/556470.html
    posted @ 2006-11-20 02:08 溫少的日志 閱讀(219) | 評論 (0)編輯 收藏
     

    C++領(lǐng)域的知名人物

    Bjarne Stoustrup 一代宗師,發(fā)明了C++,并且作了第一個實(shí)現(xiàn),把面向?qū)ο蠹夹g(shù)帶入主流,豐功偉業(yè)啊。
    Herb Sutter 大師 (IOS/ANSI C++標(biāo)準(zhǔn)委員會秘書,目前領(lǐng)導(dǎo)微軟的Concur Porject,推動并發(fā)進(jìn)入主流,有成為宗師的潛力)
    Andrei Alexandrescu 牛人 (經(jīng)典著作《Modern C++ Design Generic Programming and Design Patterns Applied》)
    Lippman 牛人 (寶刀已老)
    Scott Meyers (著名講師,自吹為C++領(lǐng)域權(quán)威,著作為Effetive C++系列)
    侯捷 (著名譯者,翻譯的書質(zhì)量不錯,但他寫的書千萬別買)

    上面的排名分先后.



    Herb Sutter

    我最佩服的人之一,他寫的Exceptional C++系列三卷書,他的網(wǎng)站www.gotw.ca,OOPSLA上的演講,他在微軟的C++/CLI、Concur Projec等,最近兩年所寫的關(guān)于并發(fā)的一些列文章,都是非常非常的棒,偶像?。?!
    hps-small.jpg.gifOOPSLA-6a.gif
    有胡子的照片比較帥一些。

    Bjarne Stoustrup

    他來過中國,以前的照片是有胡子的,好酷,最近他網(wǎng)站的照片胡子刮干凈了,難道是為了顯得年輕一些么?

    Bjarne.jpg

    Lippman

    lippman.gif lippman.jpg
    很明顯,他已經(jīng)老了。

    Scott Meyers

    scott meyers.gif
    這就那個說自己是C++領(lǐng)域權(quán)威的家伙(真的是嗎?)


    溫少 2006-11-11 13:09 發(fā)表評論


    文章來源:http://www.cnblogs.com/jobs/archive/2006/11/11/557511.html
    posted @ 2006-11-20 02:08 溫少的日志 閱讀(192) | 評論 (0)編輯 收藏
     
    昨天就開始看這個PPT,看了幾遍,對并發(fā)的前景有了更多的理解。

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


    可以從他的網(wǎng)站上下載視頻版本。

    過去30年,主流軟件開發(fā)一直忽略了并發(fā)。但是現(xiàn)在,并發(fā)時(shí)代要來了,因?yàn)槲覀兊男码娔X是并發(fā)的,軟件開發(fā)將會迎來巨變。

    現(xiàn)在買的電腦,是雙核的,明年就會是4核,然后就是8核,16核,32核……,都是之后幾年的事情,一切都不遙遠(yuǎn)!
    1.JPG


    很多服務(wù)器程序準(zhǔn)備好了(也不完全是吧),而客戶端程序還沒有。
    2.JPG


    算法的時(shí)間復(fù)雜度改變了

    3.JPG



    盲人摸象
    4.JPG



    技術(shù)發(fā)展史
     

     

    出現(xiàn)
    進(jìn)入主流
    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提供特別語法支持。這也是老生常談的咚咚了。

    溫少 2006-11-12 02:11 發(fā)表評論


    文章來源:http://www.cnblogs.com/jobs/archive/2006/11/12/558078.html
    posted @ 2006-11-20 02:08 溫少的日志 閱讀(227) | 評論 (0)編輯 收藏
     
    一般來說,Exchanger都是一個Consumer,一個producer,在適當(dāng)?shù)臅r(shí)候互相交換,這樣可以避免鎖。

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

    最初N個都是producer,達(dá)到一定條件之后,進(jìn)行交換。根據(jù)交換的結(jié)果重新確定角色,決定自己是consumer還是producer。

    這樣做的結(jié)果是,最初所有都是producer,之后一部分轉(zhuǎn)變成consumer。并且由于consumer以及producer的速度不一樣,而能夠自動適應(yīng)調(diào)整。


    要注意的是,JDK 1.5中的Exchanger只支持2 parties,N parties時(shí),N > 2會導(dǎo)致死鎖。JDK 1.6中,Exchanger重寫了,沒有這個問題。

    在JDK 1.5中要這樣用的話,可以把JDK 1.6中Exchanger源碼抄過來就是了。

    溫少 2006-11-12 22:30 發(fā)表評論


    文章來源:http://www.cnblogs.com/jobs/archive/2006/11/12/558626.html
    posted @ 2006-11-20 02:08 溫少的日志 閱讀(174) | 評論 (0)編輯 收藏
     
    java.util.concurrent中的ExecutorCompletionService,其實(shí)現(xiàn)的是CompletionService接口。

    我對ExecutorCompletionService存在一個疑問,在其實(shí)現(xiàn)中,task是被執(zhí)行之后,才把futureTask加入到completionQueue,既然如此,不如直接把Result加入到completionQueue中了。這個行為沒什么差別的。對這個類的設(shè)計(jì)存在一些懷疑,我認(rèn)為其task方法,似乎返回值是V更合適。

    原來是這樣的:
    Future<V> take() throws InterruptedException;
    Future
    <V> poll();


    覺得也許應(yīng)該改稱這樣:
    V take() throws InterruptedException;
    V poll();



    溫少 2006-11-13 20:11 發(fā)表評論


    文章來源:http://www.cnblogs.com/jobs/archive/2006/11/13/559609.html
    posted @ 2006-11-20 02:08 溫少的日志 閱讀(272) | 評論 (0)編輯 收藏
     

    客戶端程序應(yīng)用

    無意發(fā)現(xiàn)的一個類

    package javax.swing;

    public abstract class SwingWorker<T, V> implements RunnableFuture<T> { }


    也就是,一些并發(fā)相發(fā)的設(shè)計(jì)模式,已經(jīng)應(yīng)用在客戶端程序設(shè)計(jì)中。

    我沒有對swing關(guān)注更多,只是覺得預(yù)想中的趨勢開始出現(xiàn)了。

    Exchanger

    重寫了,支持N parties。


    RunnableFuture

    這是理所當(dāng)然的事情,Executor使用之后,F(xiàn)utureTask這個東西常用,兼有Runnable和Future,所以出現(xiàn)一個RunnableFuture是理所當(dāng)然。


    ConcurrentNavigableMap

    一些系列的派生類,例如ConcurrentSkipListMap等等,還沒用過,大概就是一個并發(fā)支持的SortedMap了。




    溫少 2006-11-14 01:27 發(fā)表評論


    文章來源:http://www.cnblogs.com/jobs/archive/2006/11/14/559859.html
    posted @ 2006-11-20 02:08 溫少的日志 閱讀(400) | 評論 (0)編輯 收藏
     
    應(yīng)該來說,util.concurrent包中提供的atomic,包括兩部分:

    1、atomic值對象,例如AtomicInteger、AtomicLong等。常用作計(jì)數(shù)器。
    2、AtomicReference
    3、一些內(nèi)部使用Lock提供的compareAndSet操作。例如ConcurrentHashMap的putIfAbsent。

    .NET中也提供了類似的功能,InterLocked類提供著完全的能力。

    這是一種思想,提供原子操作,把兩個以上的操作合并,使得調(diào)用者不需要使用Lock,使得程序結(jié)構(gòu)變得簡單,減少出錯的可能,包括減少死鎖發(fā)生的可能,程序也因此獲得更好的性能。

    將會有更多的數(shù)據(jù)結(jié)構(gòu)支持atomic操作,JDK 1.5提供了支持atomic操作的ConcurrentMap、JDK 1.6提供了支持atomic的ConcurrentNavigableMap。

    如同Herb Sutter預(yù)測的那樣,并發(fā)技術(shù)將進(jìn)入主流,這個過程會持續(xù)數(shù)年。



    溫少 2006-11-14 21:24 發(fā)表評論


    文章來源:http://www.cnblogs.com/jobs/archive/2006/11/14/560416.html
    posted @ 2006-11-20 02:08 溫少的日志 閱讀(205) | 評論 (0)編輯 收藏
     
    原來用不上,只是因?yàn)闆]學(xué)好,所以需要重新學(xué)習(xí)。

    溫少 2006-03-28 07:51 發(fā)表評論

    文章來源:http://jobs.cnblogs.com/archive/2006/03/28/360548.html
    posted @ 2006-07-07 22:31 溫少的日志 閱讀(178) | 評論 (0)編輯 收藏
     
    1、還沒有找到快速返回整個BDB Database數(shù)據(jù)的辦法。類似關(guān)系數(shù)據(jù)庫中的SELECT * FROM T
    2、還沒有找到使用索引進(jìn)行快速分組的辦法。類似關(guān)系數(shù)據(jù)庫中的SELECT F1, COUNT(*) FROM T GROUP BY F1 HAVING COUNT() > 1

    以上的兩個問題,我都有了能夠正確返回結(jié)果的方案,但是還沒有快速返回結(jié)果的辦法。我估計(jì)還是需要認(rèn)真閱讀BDB源碼之后才能解決。

    2006年4月4,我已經(jīng)找到原來測試返回整個DBD Database數(shù)據(jù)效率低的原因,是因?yàn)槭褂肧erialBinding的原因。全部改成TupleBinding,速度快了很多,速度是SQL Server的三倍。(返回56444行記錄)

    最近也加入了My SQL的性能測試,事實(shí)上My SQL在查詢時(shí)的速度不如SQL Server。特別作Group by的時(shí)候,性能很差的。

    溫少 2006-03-30 08:07 發(fā)表評論

    文章來源:http://jobs.cnblogs.com/archive/2006/03/30/362272.html
    posted @ 2006-07-07 22:31 溫少的日志 閱讀(296) | 評論 (0)編輯 收藏
    僅列出標(biāo)題
    共8頁: 上一頁 1 2 3 4 5 6 7 8 下一頁 
     
    主站蜘蛛池模板: 久久国产乱子伦精品免费午夜| 亚洲成a人片在线观看中文app| 亚洲天堂男人影院| 狼友av永久网站免费观看| 一区二区3区免费视频| 日韩精品一区二区亚洲AV观看 | 国产中文字幕在线免费观看| 无码专区—VA亚洲V天堂| 免费黄网在线观看| 亚洲欧美熟妇综合久久久久| 自拍偷自拍亚洲精品第1页| 成人一级免费视频| 亚洲精品视频久久久| 6080午夜一级毛片免费看| 男性gay黄免费网站| 亚洲精品在线视频观看| 全亚洲最新黄色特级网站 | 亚洲国产成人久久精品软件| 性xxxx视频播放免费| 中文字幕一区二区免费| 亚洲av成人无码久久精品| 免费国产a国产片高清网站| 91成人在线免费观看| www免费黄色网| 亚洲av无码专区在线电影| 亚洲成熟xxxxx电影| 国产成人亚洲综合| 韩国欧洲一级毛片免费| 99无码人妻一区二区三区免费| 亚洲av无码久久忘忧草| 久久亚洲精品中文字幕三区| 免费人成网站在线观看不卡 | 亚洲国产精品尤物yw在线| 免费精品国产自产拍在| APP在线免费观看视频| 四虎精品成人免费视频| 亚洲av午夜国产精品无码中文字| 亚洲av无码乱码在线观看野外 | a级男女仿爱免费视频| 日韩毛片免费一二三| 午夜亚洲国产理论秋霞|