• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            麒麟子

            ~~

            導航

            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            統(tǒng)計

            常用鏈接

            留言簿(12)

            隨筆分類

            隨筆檔案

            Friends

            WebSites

            積分與排名

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

            #

            [導入]一個簡單的線程管理方式。

            文章來源: www.17173.com

            周末,總是有點那么的無聊。閑來沒事,想想每次自己要進行多線程編程時的痛苦,也并借機考慮設計了一個簡單的線程管理方式。 

                沒什么好說的,首先想想線程的創(chuàng)建,每次都要CreateThread,傳遞一堆的參數(shù),還得沒事查查MSDN,唉,效率低啊。反正,對于我來說,線程基本都是缺省優(yōu)先級、缺省安全的。不如把這些一起封裝了。

                不多說,C++不用對象機制用什么?順便借鑒一下java。來個實際線程就是run,啟動采用start。

            class thread

            {

            public:

                 thread( void );

                 virtual ~thread( void );

             

                 virtual void run() = 0;

             

                 void start();

            };

                 這個也就是最基本的,基于對象的線程基類了。子類只需要實現(xiàn)run作為線程,調(diào)用start,就可以啟動線程了。線程的所需參數(shù),很簡單,基于對象,有需要的,做為擴展類的成員變量——成員資源來訪問。

                就這么簡單?線程訪問最大的問題——資源共享。那好,很容易想到互斥量。還有java的關鍵字synchronized,我們也就加一個鎖的概念。

            class thread

            {

            public:

                 thread( void );

                 virtual ~thread( void );

             

                 virtual void run() = 0;

             

                 void start();

             

                 static void syncLock( void *res,bool lock );

            };

                這樣,在最基本的線程資源——HANDLE,就可以被管理了,資源的訪問也可以通過lock和unlock來保護了。

                實際中,很多時候,我們希望能限制或知道有多少線程在運行,那么再加一個運行線程記數(shù)功能。大多時候,往往是采用線程池,而且會根據(jù)CPU數(shù)目,決定運行的線程數(shù)目。我們干脆,再提供一個功能,限制對象上可以允許同時運行的線程數(shù)目。那好,改為(同時加上一些保護和注解):

            typedef unsigned int U32;

            /**

             * 線程對象

             * 提供基于對象的線程處理接口

             */

            class thread

            {

            public:

                 /**

                  * 線程基于對象的構造

                  * para max 允許最多同時運行線程數(shù)

                  */

                 explicit thread( U32 max = -1 );

                 virtual ~thread( void );

             

                 /**

                  * 啟動一個線程

                  * @return 啟動成功否

                  */

                 bool start( void );

             

                 /**

                  * 對象上啟動的線程數(shù)

                  * @return 線程數(shù)

                  */

                 U32 count( void );

                

                 /**

                  * 線程執(zhí)行函數(shù)

                  * @return 無

                  */

                 virtual void run( void ) = 0;

             

                 /**

                  * 為對象加解鎖

                  * @return 無

                  * @para res 要加解鎖的資源對象

                  * @para lock 加鎖還是解鎖

                  */

                 static void syncLock( void *res,bool lock );

             

            private:

                 thread( const thread &t );

                 thread &operator=( const thread &t );

             

                 void *m_datas;

            };

                至于實現(xiàn),我想不難。別忘了,對象銷毀時要等待所有線程結束,并釋放HANDLE資源哦。否則,線程會訪問錯誤的內(nèi)存,還有線程HANDLE被泄漏的。(千萬別死鎖了,自己實現(xiàn)時就因為資源鎖來鎖去,鎖死了。)

                哈哈,就這么簡單,一個簡單的線程創(chuàng)建、管理就實現(xiàn)了。至于void *,你可以根據(jù)自己的實現(xiàn)去定義數(shù)據(jù)結構。

            東西簡單,也就不貼出cpp源碼了,關鍵是個想到、做到的問題。

                頭文件和lib,放在rar包吧,給大家一個實現(xiàn)后的參考。如果,發(fā)現(xiàn)有什么問題,可以隨時和我聯(lián)系。或者,您有更好的想法,并且愿意和我分享,那真是舉目明月,盡展抒懷。假如,您對有些語法,比如explicit不明,那么,建議您先看看有關C++的語法或者找您周圍的高手,讓他們洗腦一番。:}

            謝謝閱讀,好就此打住。

            配套程序下載:http://dev.gameres.com/Program/Other/thread.rar

            來源:游戲夢網(wǎng)


            文章來源:http://ly-weiwei.blog.163.com/blog/static/72975283200811282024276

            posted @ 2008-12-28 14:00 麒麟子 閱讀(151) | 評論 (0)編輯 收藏

            [導入]程序員改編游戲向女友求婚

              

            程序員改編游戲向女友求婚 - love.Leaf - 聽雨閣

            伯尼·彭是一名華裔金融軟件程序設計員,由于其女友塔米·李平時最喜歡玩美國Popcap游戲公司出品的一款《Bejeweled》游戲,他便暗中修改程序,讓玩家在游戲中累積到一定積分時,屏幕中會出現(xiàn)一枚戒指和一句求婚語。結果,當女友玩到這一積分時,她意外地看到了求婚語,然后答應了他。

              伯尼·彭將這段浪漫記憶寫在自己的博客上,當他接受美國《紐瓦克明星紀事報》采訪時,他覺得以這種方式求婚“略顯書呆子氣,但還算酷”。只是修改程序頗不容易,花了他整整一個月時間。

              這對情侶準備于今夏完婚,Popcap公司聞訊后,提出贈送兩人飛往西雅圖度蜜月的機票。公司一名發(fā)言人說:“多數(shù)游戲開發(fā)商不喜歡別人操縱他們的游戲程序……但這次修改為他贏得了一名女孩的心。作為編程人員,我們要對他說:‘伯尼,向你脫帽致敬!’”

              Popcap公司還打算向參加兩人婚禮的賓客贈送《Bejeweled》游戲。


            文章來源:http://ly-weiwei.blog.163.com/blog/static/729752832008112815439337

            posted @ 2008-12-28 13:55 麒麟子 閱讀(151) | 評論 (0)編輯 收藏

            [導入]十個習慣讓你精通新的開發(fā)技術

            文章來源: www.17173.com

            1. 要看書。在成千上萬的編程圖書中,可能很大一部分根本毫無用處。但是仍然有很多圖書對你的(編程)能力有很大的提升。我一直堅持,相比在網(wǎng)絡上查找很多有用信息,在同類圖書中查找要來得更容易更快捷。閱讀技術圖書可心更好地抓住核心內(nèi)容。對于理論,架構和設計等方面來說,圖書也一樣很有幫助。只不過要找到高質量的、權威的信息,就不如網(wǎng)絡上可供查找的范圍廣。

              2. 讀代碼。這也是我很喜歡的一種方式。如果我并沒有幾年的專業(yè)編程工作經(jīng)驗,在學習之初我并不會去讀很多復雜的代碼。如果我要是早些開始學習,我將是一個比現(xiàn)在更好的程序員。但是,開始時我會從一些開源項目里,去學習那些源代碼(當然,這些代碼不能與我的工作有關,也不是我自己寫的)。要從自己會使用到的,或者自己感興趣的程序開始這項工作。我是從 Paint.net 這個網(wǎng)站里開始學習的,而且已經(jīng)積累了很多關于 .NET 的編程技術。

              讀別人的代碼可以為你提供更多不同的工作思路,這比你完全憑自己思考得到的工作方式要多。

              3. 寫代碼。謹記,要寫大量的代碼。從根本上來講,最好的學習方法就是實踐。如果不寫代碼,你根本不能把(某種語言中)內(nèi)在的東西學習透徹。學習之初,可以從一些技術指南和圖書中照搬一些盡量簡單的程序。當然,這種照搬是要自己完全手工輸入,而不是復制和粘貼,這兩種之間的效果差別是很大的。這種方法的主旨就在于,使知識內(nèi)在化,并思考其用法,而不是盲目照抄。學習過程中,要時常查找新的 API 調(diào)用方法,這其實是簡單的事情。

              最重要的是,要寫一個你自己的程序,不管它是一個簡單的游戲,或者是一個參與開源項目的程序,還是一個公為你自己使用的簡單插件。用不同的方式來寫程序,盡量嘗試使用新的技術,新的技巧,新的設計方式。一定要讓現(xiàn)在的項目比以往的項目更好。想要成一個優(yōu)秀的開發(fā)者,這一點是核心。

              4. 與其他開發(fā)者交流。像 Apple,微軟,Google 等大公司一樣的新聞描述的一樣,(與其他開發(fā)者交流)可以讓你解決一些復雜的問題。雖然這并不能讓你感覺到自己已經(jīng)成一個團隊或是社區(qū)的成員,但是這種方法可以讓你接觸到更多不同的想法。

              不同類型的項目要求不同的設計方法,代碼技術,開發(fā)流程和設計思想。如果你工作在一個小團隊里,你不必與太多的人接觸,只要在用戶群會議中找到一些人(來討論)即可。如果這樣還不行的話,參與到在線論壇中與其他人討論(這時你需要更努力地尋找高質量的討論內(nèi)容)。

              6. 教會別人。相對于僅僅讀代碼之類的工作,教其他人學習可以讓你更深入地學習某個技術,這種方法有著非凡的效果。教會別人某個技術,同樣也會讓你更專注于這種技術,并且可以比別人更深層次地理解它。同樣你也會面對一些問題。

              “如果你不能向一個六歲的兒童解析清楚一個概念,那么其實是你并沒有完全理解它。”Albert Einstein說。

              教學場景可以是無窮無盡的:與工作搭檔一對一交流,休息碰面,非正式周會,學習茶會,教室,討論發(fā)表會,等等。每周在相同理念開發(fā)者之間舉辦一次30分鐘的非正式會議怎么樣?每周,讓幾個人來就他們想要更深入了解話題,向大家傳授這些技術知識,并且展開討論。如果你知道你將要向團隊成員們傳授正學學習的知識,你是不是更想要了解這項技術的每個細節(jié)呢?

              6. 收聽網(wǎng)絡電臺。如果你有空閑的時間,可以訂閱網(wǎng)絡電臺節(jié)目。我現(xiàn)在最喜歡的編程節(jié)目就是 .Net Rocks。這個節(jié)目還會做一些視頻節(jié)目,叫做 dnrTV 。這樣會讓你即時捕捉到最新最好的技術。一個人是不能學習到所有知識的,而網(wǎng)絡電臺剛是一個學習了解廣泛知識的途徑。

              7. 閱讀博客。博客遠遠比閱讀者要多,但是其中有一些卻是極其優(yōu)秀的。我這里不并不是要推薦博客,因為網(wǎng)絡上已經(jīng)有了足夠多的博客。這是與真正在開發(fā)你所喜歡和使用的軟件的開者聯(lián)系的好方法。

              8. 學習新的語言。即使你已經(jīng)在 C(++,#) / JAVA 等語言上有很好的造詣,仍然有很多其他可以解決問題的編程語言。學習新的語言,是對你已有思維方式的挑戰(zhàn)。這不僅僅是另一種語言,更是對思維的重新架構。的確,所有的語言最后都會被編譯成匯編程序,但是這并不意味著高級語言毫無價值。

              9. 學習不正確的方式。除了要學習應該怎么做,還要學習不應該怎么做。經(jīng)常閱讀 Dailywtf.com ,學習你并不知道的經(jīng)驗與教訓。學習適當?shù)拿嫦驅ο笤O計方式,代碼寫作方式,和必須要寫的代碼等,是很好的方式,但是如果不細心的話也容易養(yǎng)成不良習慣。學習認識不正確的思路是負責項目開發(fā)至關重要的一環(huán)。

              維基百科對很多覺的不正確方式有十分透徹的分類。

              10. 要謙虛。

              學習,意味著用更好的知識代替不完美的知識,增長你所不知道的知識。只有承認自己有所不足,才能有學習的動力。歸根到底,就是謙虛,不對嗎?如果你開始認為你已經(jīng)掌握了所有需要的知識,那么你就危險了。真正的學習是如饑似渴地追逐知識并使其內(nèi)在化,這需要很大的努力。我們都知道這一點,但是要必須時常不斷地提醒自己。


            文章來源:http://ly-weiwei.blog.163.com/blog/static/729752832008112814833200

            posted @ 2008-12-28 13:49 麒麟子 閱讀(82) | 評論 (0)編輯 收藏

            [導入]如何成為一名優(yōu)秀的程序員?

            文章來源: www.17173.com

            程序員(英文Programmer)是從事程序開發(fā)、維護的專業(yè)人員。一般我們將程序員分為程序設計人員和程序編碼員,但兩者的界限并不非常清楚,特別是在中國。

                作一個真正合格的程序員,應該具有的素質。

                1:團隊精神和協(xié)作能力 團隊精神和協(xié)作能力是作為一個程序員應具備的最基本的素質。軟件工程已經(jīng)提了將近三十年了,當今的軟件開發(fā)已經(jīng)不是編程了,而是工程。獨行俠可以寫一些程序也能賺錢發(fā)財,但是進入研發(fā)團隊,從事商業(yè)化和產(chǎn)品化的開發(fā)任務,就必須具備這種素質。可以毫不夸張的說這種素質是一個程序員乃至一個團隊的安身立命之 本。

                2:文檔習慣 文檔是一個軟件系統(tǒng)的生命力。一個公司的產(chǎn)品再好、技術含量再高,如果沒有缺乏文檔,知識就沒有繼承,公司還是一個來料加工的軟件作坊。作為代碼程序員,必須將30%的工作時間寫用于技術文檔。沒有文檔的程序員勢必會被淘汰。

                3:規(guī)范化的代碼編寫習慣 知名軟件公司的代碼的變量命名、注釋格式,甚至嵌套中行縮進的長度和函數(shù)間的空行數(shù)字都有明確規(guī)定,良好的編寫習慣,不但有助于代碼的移植和糾錯,也有助于不同技術人員之間的協(xié)作。一些所謂的高手甚至叫囂高手寫的代碼一般人看不懂,我只能說他不是一名合格的程序員。

                4:需求理解能力 程序員要能正確理解任務單中描述的需求。在這里要明確一點,程序員不僅僅要注意到軟件的功能需求,還應注意軟件的性能需求,要能正確評估自己的模塊對整個項目中的影響及潛在的威脅,如果有著兩到三年項目經(jīng)驗的熟練程序員對這一點沒有體會的話,只能說明他或許是認真工作過,但是沒有用心工作。

                5:模塊化思維能力 作為一個優(yōu)秀的程序員,他的思想不能在局限當前的工作任務里面,要想想看自己寫的模塊是否可以脫離當前系統(tǒng)存在,通過簡單的封裝在其他系統(tǒng)中或其他模塊中直接使用。這樣做可以使代碼能重復利用,減少重復的勞動,也能是系統(tǒng)結構越趨合理。模塊化思維能力的提高是一個程序員的技術水平提高的一項重要指標。

                6:測試習慣 測試是軟件工程質量保證的重要環(huán)節(jié),但是測試不僅僅是測試工程師的工作,而是每個程序員的一種基本職責。程序員要認識測試不僅是正常的程序調(diào)試,而要是要進行有目的有針對性的異常調(diào)用測試,這一點要結合需求理解能力。

                7:學習和總結的能力 程序員是很容易被淘汰的職業(yè),所以要善于學習總結。許多程序員喜歡盲目追求一些編碼的小技巧,這樣的技術人員無論學了多少語言,代碼寫起來多熟練,我們只能說他是一名熟練的代碼民工,他永遠都不會有質的提高。一個善于學習的程序員會經(jīng)常總結自己的技術水平,對自己的技術層面要有良好的定位,這樣才能有目的 地提高自己。這樣才能逐步提高,從程序員升級為軟件設計師、系統(tǒng)分析員。

              作為高級程序員,乃至于設計師而言,除了應該具備上述全部素質之外,還需要具備以下素質:1、 需求分析能力2、 整體框架能力3、 流程處理能力4、 模塊分解能力5、 整體項目評估能力6、 團隊組織管理能力1,激情。

              我曾經(jīng)遇到許多“職業(yè)程序員”,他們從事IT是因為覺得這是一種職業(yè),他們只在工作時間編程,除非送去培訓否則他們不會學習新東西,這不是好的程序員。我認為一個好的程序員總是對編程充滿激情,而且好的開發(fā)者會做一些編程工作即使這沒有報酬。激情是一個優(yōu)秀程序員的重要指標。2,自學好學

              編程領域始終發(fā)展變化著,不出一年有些新技術就變成了老技術,這并不是說好的程序員要對所有新技術跟進,但有些卻對學習任何新技術都沒有興趣。他們通常在學校學習了編程,然后工作后單位安排學什么就學什么。如果在招聘中你聽到“讓我培訓一個星期我就會勝任這個工作”那不要雇傭他。實際上,真正優(yōu)秀的程序員 始終談論著你所不知道的新技術,向人們解釋為什么你必須用這個技術,哪怕沒有聽眾聽得明白,哪怕他自己也不明白。3,聰明

              聰明包括很多因素,情緒和社會交際只是其中之一。好的程序員絕不木訥,他們是最聰明的人,他們中的許多善于交際,健談、興趣廣泛。4,隱性的經(jīng)驗

              —好的程序員通常有自己的私人的一些研究、愛好、項目,而這些是他們不寫在簡歷上(通常覺得不值得寫),但表現(xiàn)出來卻可能恰恰是他的潛能、深度和后勁所在。5,技術多樣性

              由于好的程序員喜歡學習和涉獵新技術,所以一般來說超過22歲的都熟知很多新技術,而且對多種技術的長短有“強烈”的個人意見/見解,喜好嘗試新鮮技術。6,資格證書

              資格證書并不是識別真正程序員的方法,MCSE、SCJP說明不了什么,它們只是讓別人認識和獲取的,頂多代表這個人在某個技術有一定的知識。原文作者在文末寫道:以上所說的標準并不是絕對的,因為有些優(yōu)秀的程序員確實不符合上述,而有些bad程序員卻符合了。但相信這些對大多數(shù)真正的程序員都適用。


            文章來源:http://ly-weiwei.blog.163.com/blog/static/729752832008112814218104

            posted @ 2008-12-28 13:42 麒麟子 閱讀(149) | 評論 (0)編輯 收藏

            [導入]讓你徹底明白什么叫游戲引擎(5)

            引擎的明天(2001年~)

                2001年有許多優(yōu)秀的3D射擊游戲陸續(xù)發(fā)布,其中一部分采用的是Quake III和Unreal Tournament等現(xiàn)成引擎,如《星際迷航深度空間九:墜落》、《重返德軍總部》和《榮譽勛章:盟軍進攻》,而更多的則采用的是自己開發(fā)的引擎,比較有代表性的包括網(wǎng)絡射擊游戲《部落2》(Tribes 2)、第一人稱射擊游戲《馬科斯·佩恩》、《紅色派系》(Red Faction)和《英雄薩姆》等。

                《部落2》采用的是V12引擎,這款引擎雖然無法同Quake III和Unreal Tournament相提并論,但開發(fā)者為它制定的許可模式卻相當新穎,你只需花上100美元就可以獲得引擎的使用權,不過天下沒有免費的午餐,隨之而來的一系列規(guī)定相當苛刻,例如,開發(fā)者不能把該引擎用于為其它游戲發(fā)行商、其它商業(yè)游戲站點等競爭對手制作游戲,開發(fā)出來的游戲必須在發(fā)行前交給GarageGames公司(V12引擎的所有者),不能交給任何第三方,GarageGames公司將擁有這些游戲五年的獨家發(fā)行權等等。盡管如此,對于那些規(guī)模較小的獨立開發(fā)者來說,這個超低價引擎仍然具有非常大的吸引力。

                《馬科斯·佩恩》采用的是MAX-FX引擎,這是第一款支持輻射光影渲染技術(Radiosity Lighting)的引擎,這種技術以往只在一些高級的建筑設計軟件中出現(xiàn)過,它能夠結合物體表面的所有光源效果,根據(jù)材質的物理屬性及其幾何特性,準確地計算出每個點的折射率和反射率,讓光線以更自然的方式傳播過去,為物體營造出十分逼真的光影效果。MAX-FX引擎的另一個特點是所謂的“子彈時間”(Bullet Time),這是一種《黑客帝國》風格的慢動鏡頭,在這種狀態(tài)下甚至連子彈的飛行軌跡都可以看得一清二楚。MAX-FX引擎的問世把游戲的視覺效果推向了一個新的高峰。

                《紅色派系》采用的是Geo-Mod引擎,這是第一款可任意改變幾何體形狀的3D引擎,也就是說,你可以使用武器在墻壁、建筑物或任何堅固的物體上炸開一個缺口,穿墻而過,或者在平地上炸出一個彈坑躲進去。Geo-Mod引擎的另一個特點是高超的人工智能,敵人不僅僅是在看見同伴的尸體或聽見爆炸聲后才會做出反應,當他們發(fā)現(xiàn)你留在周圍物體上的痕跡如彈孔時也會警覺起來,他們懂得遠離那些可能對自己造成傷害而自己又無法做出還擊的場合,受傷的.


            文章來源:http://ly-weiwei.blog.163.com/blog/static/729752832008112813341616

            posted @ 2008-12-28 13:34 麒麟子 閱讀(132) | 評論 (0)編輯 收藏

            僅列出標題
            共38頁: First 28 29 30 31 32 33 34 35 36 Last 
            亚州日韩精品专区久久久| 亚洲国产精品久久久久婷婷软件| 久久精品视屏| 狠狠色丁香婷婷久久综合| 蜜臀av性久久久久蜜臀aⅴ| 国产精品福利一区二区久久| 国产高潮久久免费观看| 伊人久久大香线蕉亚洲五月天| 77777亚洲午夜久久多喷| 日日狠狠久久偷偷色综合0| 久久婷婷五月综合色高清| 国产农村妇女毛片精品久久| 久久亚洲美女精品国产精品| 99久久精品免费看国产一区二区三区| 精品伊人久久大线蕉色首页| 91精品国产色综久久 | 久久精品国产2020| 国产91久久综合| 久久精品人人做人人爽电影蜜月 | 久久人人爽人人爽人人爽| 99久久婷婷国产一区二区| 欧洲成人午夜精品无码区久久| 2021国产精品久久精品| 精品熟女少妇aⅴ免费久久| 久久久久亚洲AV成人片| 无码日韩人妻精品久久蜜桃| 一本色道久久88综合日韩精品 | 久久久精品免费国产四虎| 国内精品久久久久伊人av| 亚洲AV无码1区2区久久| 狠狠色婷婷久久一区二区| 蜜桃麻豆WWW久久囤产精品| 蜜桃麻豆www久久国产精品| 狠狠人妻久久久久久综合蜜桃| 日本道色综合久久影院| 久久精品午夜一区二区福利 | 亚洲午夜久久久影院| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲精品美女久久久久99| 国产精品久久久久蜜芽| 国产免费久久精品99re丫y|