国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

C++多線程測試要點總結

開發 后端
我們在這篇文章中為大家詳細介紹了C++多線程測試的一些注意事項,希望大家可以充分掌握這些應用要點,以幫助我們順利完成測試。

當我們在使用C++多線程進行測試的時候,有許多要點值得我們去關注。在這篇文章中我們將會為大家總結幾個比較重要的注意事項,希望能夠幫助大家充分掌握C++多線程測試的方法。#t#

在上次的帖子聊了C++多線程的跨平臺問題,后來感覺意猶未盡。今天順便說一下開發C++多線程應用程序時,有關調試和測試的一些注意事項。下面這些注意事項主要是針對C++,不過有些對于其它的語言也適用。

★關于設置斷點和單步執行

很多同學非常依賴于調試器的斷點功能和單步功能。這在單線程情況下倒還好(不過有些單線程但涉及GUI的程序,也會有點麻煩)。至于多線程程序的調試,這兩種手段簡直就是噩夢的開始。多線程造成的主要問題大都和競態條件(Race Condition,詳細解釋看“這里”)有關。而設置斷點或單步跟蹤可能會嚴重干擾多線程之間的競爭狀態。導致你看到的是一個假象。比如本來有兩個線程并發執行,存在某些不和諧的Bug(由競態引起)。一旦你在某一個線程設置了斷點,該線程在斷點處停住了,只剩下另一個線程在跑。這時候,并發的場景已經完全被破壞了,你通過調試器看到的可能是一個和諧的場景。

稍微跑一下題。這很類似量子力學的“測不準原理”,觀測者的觀測行為干擾了被測量的客體,導致觀測者看到的是一個干擾后的現象。

★關于Log輸出

既然斷點和單步不好用。那咋辦捏?一個替代方案是輸出log日志。它可以有效減輕斷點和單步所導致的(針對競態條件的)副作用。

◇傳統Log機制的問題

傳統的log輸出主要是打印到屏幕或者輸出到文件。對于C++而言,標準庫內置的類和函數(比如cout、printf、fputs)可能會有線程安全的問題(和編譯器的具體實現有關)。尤其是標準流類庫(iostream)的八個全局對象,更是要小心慎用。輕則輸出的log文本混雜,重則導致程序崩潰。

鑒于上述原因,應該盡量使用第三方線程庫內置的log機制來搞定log輸出功能。比如ACE內置的ACE_Log_Msg等。

◇Log函數要短小精悍

在C++多線程測試中的很多情況下,我們會包裝一個公用的函數來實現log輸出功能。然后在該函數內部調用線程庫的log類/函數。為了不影響線程的競態條件,這個log函數要盡可能簡單輕便:不要涉及太多雜七雜八的瑣事、千萬別進行耗時的操作、盡量不操作一些全局的變量。

◇Log的副作用

不過捏,即使log函數再短小精悍,也還是有可能影響競態條件(畢竟log也有開銷,也要消耗CPU時間)。
萬一競態條件受到log的影響,那就比較棘手了。我以前就碰到過這種情況:加了log,程序沒有問題;去掉log,程序隨機崩潰。這種情況一般有兩種可能:要么是log功能本身有問題,要么是程序的競態條件非常敏感(連log的開銷都會有影響)。

這時候你能依靠的就只有肉眼和人腦了。先把相關的代碼和文檔仔細看上幾遍(***再找其他有經驗的人一起Code Review),然后大家一起開動腦筋使勁琢磨。

★關于Debug版本和Release版本

C++程序經常有Debug版本和Release版本的區別。有些時候,這也會導致一些多線程的問題。

由于Debug版本包含了一些調試信息、啟用了某些調試機制(比如assert宏)。所以就可能影響到多線程的競爭狀態。在倒霉的時候,會碰上Debug版本工作正常,Release版本程序隨機崩潰。要避免這種情況,可以考慮下面兩個辦法:

◇放棄使用Debug版本

你可以干脆放棄使用Debug版本。在這種情況下,你需要考慮把諸如assert之類調試相關的宏替換成自己的一套宏,使得在非Debug版本下也可以生效。

◇兩種版本同步的C++多線程測試

使用此方法,程序員平時自測可以使用Debug版本,但是測試人員日常測試的必須是Release版本。具體的操作步驟可以利用每日構建來輔助進行(每日構建的介紹參見“這里”)。一定要避免:在平時僅僅搞Debug版本的測試,等到發布前夕再制作Release版本。這種做法是非常危險的!

★關于C++多線程測試的機器(硬件)

說一個親身經歷、印象深刻的事情。

當年用ACE開發跨平臺程序的時候,公司內的的開發環境和測試環境都是單CPU的機器。因為當時多核的機器還沒有面世,多CPU的機器又挺貴,公司沒舍得花錢配置。

軟件開發完之后,測試人員經過幾輪回歸測試,也沒發現太大問題。但是拿到客戶的環境中運行,卻經常會隨機性崩潰。因為不能在客戶環境中Debug,自己的環境又死活沒問題,開發組的幾個人只好充分發揮肉眼和人腦的功能(盯著代碼和設計文檔猛想)。經過N長時間,差點把腦袋想破,***才意識到客戶的機器是多CPU的。然后趕緊從其它部門借了一臺多CPU機器,裝上軟件調試,***查出是一個第三方庫有問題。此事過后,我立即想出各種法子,去申請了幾臺多CPU機器給測試人員用。

由于上述的前車之鑒,所以我強烈建議:如果是開發多線程的應用程序,盡量給每一個編程人員和測試人員都配置多核/多CPU的機器。畢竟現在多核機器已經很普及了,即使多CPU的機器,價格也還湊合。實在沒必要為了省那點小錢而引入開發風險(不光會浪費開發/測試人員的時間,還可能增加實施和維護的成本)。

另外,可能有同學會問“超線程的機器如何捏?”關于多CPU、多核、超線程三者之間的差異,有興趣的同學可以看“這里”。我個人感覺超線程不如多核與多CPU爽。

以上就是對C++多線程測試的相關介紹。

責任編輯:曹凱 來源: 博客園
相關推薦

2012-05-18 10:36:20

CC++編程

2011-04-19 17:36:12

C++

2011-04-19 17:44:02

C++

2011-06-14 15:25:28

C++多線程

2010-02-04 10:19:39

C++多線程

2010-01-18 14:09:58

C++多線程

2021-02-25 15:58:46

C++線程編程開發技術

2021-03-05 07:38:52

C++線程編程開發技術

2024-06-24 08:10:00

C++互斥鎖

2023-12-14 15:05:08

volatile代碼C++

2024-11-05 16:29:57

2024-06-24 12:57:09

多線程C++編程語言

2010-01-13 16:54:29

C++測試

2009-08-26 18:02:15

C#多線程

2011-07-13 16:49:59

C++

2025-04-10 01:01:00

2022-10-11 08:14:14

多線程鎖機制

2015-03-24 13:46:29

C++多線程計數器特性實現

2024-02-02 18:29:54

C++線程編程

2009-06-11 10:48:53

Java多線程
點贊
收藏

51CTO技術棧公眾號

国产网红女主播精品视频| 成人ssswww在线播放| 在线亚洲国产精品网站| 精品成a人在线观看| 国产一级不卡毛片| 国产精品老牛| 欧美日韩高清在线观看| 日韩在线观看www| 国产精品久久久久久久午夜片| 久久精品日产第一区二区三区精品版| 亚洲欧洲日韩精品在线| 欧美性一级生活| 蜜臀av免费观看| 国产综合久久久久影院| dy888夜精品国产专区| 精品精品国产毛片在线看| 4438x成人网最大色成网站| 国产乱子视频| av亚洲精华国产精华精华| 国产日韩一区二区三区| 亚洲黄页网站| 久久精品福利视频| 高h视频在线观看| 午夜久久久久久久久久一区二区| 给我免费播放片在线观看| 一本久道综合久久精品| 国产精品视频成人| 精品淫伦v久久水蜜桃| 亚洲精品久久久一区二区三区 | 日韩av有码| 欧美成人高清视频| 天堂中文最新版在线中文| 欧美日韩国产一级| 邻居大乳一区二区三区| 亚洲高清免费观看高清完整版在线观看 | 欧美三级电影一区| 在线亚洲电影| www.在线观看av| 亚洲承认在线| 国产精品久久一区二区三区| 精品国产成人| 性色av一区二区三区在线观看| 色香欲www7777综合网| 日韩一级成人av| 日本电影在线观看网站| 精品久久久免费| 国产乱子视频| 亚洲色图在线播放| 亚洲黄色av网址| 国产性色一区二区| 精品久久久噜噜噜噜久久图片| 99久久伊人久久99| 六月丁香婷婷激情| 91视频你懂的| 日日干夜夜操s8| 亚洲色欲色欲www| 在线观看国产视频一二三| 樱花影视一区二区| 国产精品精华液网站| 亚洲成人福利片| 天堂av网在线| 欧美一区二视频| av漫画网站在线观看| 日韩电影免费在线观看中文字幕| 操人在线观看| 国产一区二区三区视频免费| 日韩三区在线| 电影午夜精品一区二区三区| 国产精品vip| 国产精品嫩草在线观看| 国产亚洲在线| 欧美午夜aaaaaa免费视频| 99精品偷自拍| 日本久久久久久| 精品无吗乱吗av国产爱色| 精品久久久国产| 黄色一级片网址| 水野朝阳av一区二区三区| 欧美中文在线观看国产| 电影天堂国产精品| 黄色精品一区二区| 五月婷婷在线观看| 国产精品一区久久久久| 精品国产乱码一区二区三区| 91精品国产高清久久久久久91| 欧美裸体在线版观看完整版| 国产精品9999久久久久仙踪林| 麻豆一区二区99久久久久| 97超碰青青草| 一本色道久久综合亚洲91| 激情国产在线| 青草青草久热精品视频在线网站| 激情欧美一区二区三区| 欧美精品久久久久久久久久久| 亚洲资源在线观看| 黄频免费在线观看| 国产精品av免费在线观看| 日韩国产在线观看一区| 天天爱天天操天天干| 欧美日韩国产大片| 深夜福利一区| 久久精品日产第一区二区三区精品版| 成人黄色在线网站| 青青草在线免费观看| 亚洲天堂成人在线视频| 青草国产精品| 丝袜老师办公室里做好紧好爽 | 欧美成人精品| 欧美黄色免费网址| 狠狠色噜噜狠狠狠狠97| 伦一区二区三区中文字幕v亚洲| 国产在线999| 91欧美一区二区| 免费人成在线观看播放视频| 国色天香2019中文字幕在线观看| 日韩精品三区四区| 日本亚洲一区| 欧美有码在线观看| 99免费精品在线| av电影在线地址| 国产精品日韩一区二区三区 | 欧美tickling网站挠脚心| 久久久999免费视频| 日本精品视频一区| 精品视频在线免费看| 亚洲成人av高清| 日韩视频免费观看| 视频一区二区三区中文字幕| 欧美黑人巨大| 欧美激情久久久| 精品一区二区三区欧美| 1769在线观看| 91久久久精品| 亚洲三级在线播放| 亚洲视频国产精品| 无罩大乳的熟妇正在播放| 精品少妇一区二区三区日产乱码 | 欧美在线999| 丝袜连裤袜欧美激情日韩| 成人av在线播放观看| 亚洲精品在线观看视频| 亚洲片区在线| 丁香婷婷在线| 国产校园另类小说区| 成人激情视频小说免费下载| 中日韩av电影| 国产精品高清一区二区| 老司机激情视频| 国产午夜精品理论片a级探花| 亚洲精品欧洲| 天堂а√在线官网| 精品视频导航| 色视频一区二区| 久久久久久美女精品| 男人天堂午夜在线| 成人av在线亚洲| 色婷婷综合久久久久中文一区二区 | 欧美高跟鞋交xxxxxhd| av网站一区二区三区| 日韩漫画puputoon| 隔壁人妻偷人bd中字| 中文字幕精品国产| 2024国产精品| 国产精品极品| 一级片免费视频| 国产精品∨欧美精品v日韩精品| 亚洲乱码中文字幕综合| 国产一区三区在线播放| 日本成人一区二区三区| 精品国产一区二区三区麻豆免费观看完整版 | 最新中文字幕av专区| 国产精品美女主播在线观看纯欲| 亚洲精品ww久久久久久p站| 国产日产精品一区二区三区四区的观看方式 | 欧美精品乱码久久久久久按摩| 亚洲欧美日韩精品一区二区| 羞羞网站在线免费观看| 影音先锋成人资源网站| 日日骚久久av| 中文字幕五月欧美| 国产精品久久久久久影院8一贰佰| 日本一不卡视频| 日韩在线观看免费全| 九九精品视频在线看| 北岛玲一区二区三区| 国产高清视频在线播放| 国产精品99一区| 欧美午夜精品| 日韩av中文字幕一区二区三区| 午夜日韩成人影院| 91麻豆福利| 在线观看中文字幕不卡| 亚洲高清不卡| 中文字幕在线免费观看视频| 男人天堂999| 国产成人精品视频在线观看| 日本高清无吗v一区| 精品亚洲国产成人av制服丝袜| 精品视频一二| 中文在线а天堂av|