国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

并發(fā)編程的挑戰(zhàn)(一)

2019-11-11 06:20:16
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

1.1 上下文切換

       即使是單核處理器也支持多線程執(zhí)行代碼,CPU通過(guò)給每個(gè)線程分配CPU時(shí)間片來(lái)實(shí)現(xiàn)這個(gè)機(jī)制。時(shí)間片是CPU分配給每個(gè)線程的時(shí)間,因?yàn)闀r(shí)間片非常短,說(shuō)以CPU通過(guò)不停地切換線程執(zhí)行,讓我們感覺(jué)多個(gè)線程是同時(shí)執(zhí)行的,時(shí)間片一般是幾十毫秒(ms)。       CPU通過(guò)時(shí)間片分配算法來(lái)循環(huán)執(zhí)行任務(wù),當(dāng)前任務(wù)執(zhí)行一個(gè)時(shí)間片后會(huì)切換到下一個(gè)任務(wù)。但是,在切換前會(huì)保存上一個(gè)任務(wù)的狀態(tài),以便下次切換回這個(gè)任務(wù)時(shí),可以再加載這個(gè)任務(wù)的狀態(tài)。所以任務(wù)從保存到加載的過(guò)程就是一次上下文切換。       上下文切換會(huì)影響多線程的執(zhí)行速度,因?yàn)榫€程有創(chuàng)建上下文切換的開(kāi)銷(xiāo),所以當(dāng)線程過(guò)多時(shí)速度不一定比線程少時(shí)執(zhí)行更快。

1.1.1 如何減少上下文切換

        減少上下文切換的方法有:無(wú)鎖并發(fā)編程、CAS算法、使用最少線程和使用協(xié)程。       無(wú)鎖并發(fā)編程:多線程競(jìng)爭(zhēng)鎖時(shí),會(huì)引起上下文切換,所以多線程處理數(shù)據(jù)時(shí),可以用一些辦法來(lái)避免使用鎖,如將數(shù)據(jù)的ID按照Hash算法取模分段,不同的線程處理不同段的數(shù)據(jù)。       CAS算法java的Atomic包使用CAS算法來(lái)更新數(shù)據(jù),而不需要加鎖。       使用最少線程:避免創(chuàng)建不需要的線程。       協(xié)程:在單線程里實(shí)現(xiàn)多任務(wù)的調(diào)度,并在單線程里維持多個(gè)任務(wù)間的切換。

1.2 死鎖

       避免死鎖的幾個(gè)常見(jiàn)。       避免一個(gè)線程同時(shí)獲取多個(gè)鎖。       避免一個(gè)線程在鎖內(nèi)同時(shí)占用多個(gè)資源,盡量保證每個(gè)鎖只占用一個(gè)資源。       對(duì)于數(shù)據(jù)庫(kù)鎖,加鎖和解鎖必須在一個(gè)數(shù)據(jù)庫(kù)連接里,否則會(huì)出現(xiàn)解鎖失敗的情況。

1.3 資源限制的挑戰(zhàn)

1.3.1 什么是資源限制

       就是在并發(fā)編程時(shí),程序的執(zhí)行速度受限于計(jì)算機(jī)資源或軟件資源。

1.3.2 資源限制引發(fā)的問(wèn)題

         并發(fā)編程中,將代碼執(zhí)行速度加快的原則是將代碼中串行執(zhí)行部分編程并發(fā)執(zhí)行。

1.3.3 如何解決資源限制的問(wèn)題

       對(duì)于硬件資源限制,可以考慮使用集群并行執(zhí)行程序。

       對(duì)于軟件資源限制,可以考慮使用資源池復(fù)用。比如使用連接池將數(shù)據(jù)庫(kù)和Socket連接復(fù)用,或者在調(diào)用對(duì)方webservice接口獲取數(shù)據(jù)是,只建立一個(gè)連接。

1.3.4 在資源限制情況下進(jìn)行并發(fā)編程

       根據(jù)不同的資源限制調(diào)整程序的并發(fā)度,比如下載文件程序依賴(lài)兩個(gè)資源:帶寬和硬盤(pán)讀寫(xiě)速度。有數(shù)據(jù)庫(kù)操作時(shí),涉及數(shù)據(jù)庫(kù)連接數(shù),如果SQL語(yǔ)句執(zhí)行非常快,而線程的數(shù)量比數(shù)據(jù)庫(kù)連接數(shù)大很多,則某些線程會(huì)被阻塞,等待數(shù)據(jù)庫(kù)連接。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 仪陇县| 资兴市| 磴口县| 泰和县| 大悟县| 凤庆县| 娱乐| 湘阴县| 文昌市| 恭城| 镇原县| 山阳县| 光泽县| 页游| 城市| 衢州市| 扶风县| 金坛市| 博爱县| 安乡县| 虹口区| 鄢陵县| 德安县| 肥东县| 永和县| 铁岭县| 宁海县| 金平| 增城市| 威海市| 磐石市| 济源市| 栾川县| 新巴尔虎左旗| 原平市| 大足县| 隆德县| 买车| 项城市| 含山县| 临洮县|