寫給c/c++的新同行門,CTO門把你們的寶貴經(jīng)驗(yàn)?zāi)贸鰜戆桑屵@個(gè)帖對(duì)大伙有用
1、越界
越界是最難查的,注意memcpy strcpy,strncpy這些函數(shù)使用前一定要檢查邊界
特別是你提供函數(shù)給別人用時(shí),你的函數(shù)中用到了這些東西,一定要檢查別人傳給你的指針的
邊界
2、變量初始化
這種問題要養(yǎng)成好習(xí)慣,否則出來偶然性問題,非常難查
3、多線程指針管理
在多線程環(huán)境下使用指針時(shí),最好采用引用計(jì)數(shù),讓最后一個(gè)放充引用計(jì)數(shù)時(shí),指針刪除,避免一個(gè)線程在使用指針,另外線程刪除掉
4、多線程鎖的管理
多線程鎖要粒度要適中,盡量減少 一個(gè)函數(shù) 進(jìn)入多個(gè)鎖,避免一個(gè)大函數(shù)一個(gè)大鎖影響性能,可學(xué)習(xí)數(shù)據(jù)庫的表級(jí),行級(jí)鎖
盡量不要在回調(diào)函數(shù)中放鎖,易 引起死鎖
做到線程安全函數(shù)單向調(diào)用,上層往下層調(diào)用,下屋向上層采用事件驅(qū)動(dòng)反饋,避免調(diào)用棧
過深,易引起死鎖
,
5、多線程對(duì)象生存期管理
盡量當(dāng)多線程共享對(duì)象 盡量不要直接刪除,建議采用狀態(tài)機(jī)形式來管理,其它線程設(shè)置狀態(tài)
由一個(gè)線程統(tǒng)一按狀態(tài)管理生存期
6、構(gòu)造函數(shù)
函造函數(shù)中不要放虛函數(shù),絕對(duì)不要在構(gòu)造函數(shù)中開線程,并且線程調(diào)用自己的成員
7、內(nèi)聯(lián)
虛函數(shù)不要內(nèi)聯(lián)
8、多線程創(chuàng)建辦法
如果用C運(yùn)行庫函數(shù),要注意用C運(yùn)行庫的方法
9,內(nèi)存管理
建議采用內(nèi)存池管理
10、線程生存期管理
線程中盡量不要調(diào)用同步函數(shù),不要強(qiáng)行殺線程,要讓線程不斷循環(huán),等待死亡信號(hào)自己退出
大盤預(yù)測(cè) 國富論