互斥鎖和悲觀鎖區(qū)別面試 互斥鎖和讀寫(xiě)鎖的區(qū)別?
互斥鎖和讀寫(xiě)鎖的區(qū)別?我缺乏天賦和學(xué)識(shí)。我給你一個(gè)簡(jiǎn)短的回答。:有互斥鎖、讀寫(xiě)鎖、信號(hào)量和條件變量。信號(hào)量和互斥量也可以在進(jìn)程之間使用,SEM是從它的名字ut定義的,我們可以看到它不是專用于線程的(帶
互斥鎖和讀寫(xiě)鎖的區(qū)別?
我缺乏天賦和學(xué)識(shí)。我給你一個(gè)簡(jiǎn)短的回答。
:有互斥鎖、讀寫(xiě)鎖、信號(hào)量和條件變量。信號(hào)量和互斥量也可以在進(jìn)程之間使用,SEM是從它的名字ut定義的,我們可以看到它不是專用于線程的(帶有pthread的通用名稱);信號(hào)量是互斥量的增強(qiáng)版本(1->N);條件變量與互斥量一起使用來(lái)實(shí)現(xiàn)線程阻塞,而線程阻塞本身不是鎖。
:mutex(初始化時(shí)將屬性修改為shared pthread) mutexattr Setpshared function);文件鎖是進(jìn)程中應(yīng)用的一種鎖。由于多線程是通過(guò)修改文件描述符所指向的文件結(jié)構(gòu)中的成員變量來(lái)實(shí)現(xiàn)的,因此不能在線程之間使用文件鎖。
做程序時(shí),如果某個(gè)查詢方法應(yīng)當(dāng)返回一條記錄,但是查出來(lái)多條,是拋異常好還是從多條中取第一條好?
我有10年的開(kāi)發(fā)和培訓(xùn)經(jīng)驗(yàn)。在此期間,我經(jīng)歷了Java、web、Android、H5、大數(shù)據(jù)、PHP等不同的發(fā)展方向。我也是軟件培訓(xùn)公司的金牌講師。我對(duì)回答這個(gè)問(wèn)題很感興趣。
您已經(jīng)清楚地解釋了這個(gè)問(wèn)題中的要求,“一個(gè)查詢方法應(yīng)該返回一條記錄,但是可以找到多條記錄”!也就是說(shuō),您的查詢應(yīng)該只有一個(gè)結(jié)果,但此時(shí)或某個(gè)時(shí)候,會(huì)有多個(gè)結(jié)果,這意味著您的業(yè)務(wù)接口可能不滿足冪等性的要求。根據(jù)冪等設(shè)計(jì)原理,無(wú)論怎樣查找,只要參數(shù)相同,返回的結(jié)果應(yīng)該是相同的。
那么如何解決這個(gè)問(wèn)題并拋出異常呢?返回到幾個(gè)中的第一個(gè)?
我認(rèn)為這不是一個(gè)完美的解決方案。
這對(duì)某些人來(lái)說(shuō)是一個(gè)解決方案,但是問(wèn)題解決了嗎?一點(diǎn)也不!問(wèn)題仍然存在。下次觸發(fā)此條件時(shí),仍將引發(fā)異常。就像說(shuō)森林里有一只老虎。有一天,它吃人,然后你不解決老虎的問(wèn)題。你只是在森林里掛了一塊牌子,上面寫(xiě)著:小心,里面有老虎!這…
事實(shí)上,這不是一個(gè)好辦法。也許只有一件東西應(yīng)該被退回。為什么要查詢多個(gè)項(xiàng)目?您是否檢查了數(shù)據(jù)庫(kù)中數(shù)據(jù)的唯一性?你不覺(jué)得每次查詢多個(gè)結(jié)果然后得到第一個(gè)數(shù)據(jù)效率很低嗎?
所以我們應(yīng)該從根本上解決問(wèn)題!為什么會(huì)產(chǎn)生多個(gè)數(shù)據(jù)?如果要手動(dòng)檢查數(shù)據(jù),則需要手動(dòng)檢查。如果要鎖定它,應(yīng)該盡最大努力確保輸入?yún)?shù)相同,結(jié)果相同
如何理解互斥鎖、條件鎖、讀寫(xiě)鎖以及自旋鎖,它們的區(qū)別在哪?
學(xué)習(xí)復(fù)雜技術(shù)必須通過(guò)簡(jiǎn)單的生活實(shí)例來(lái)理解,加深記憶,否則你永遠(yuǎn)不會(huì)掌握
!鎖用于高并發(fā)多線程模型,解決共享資源的安全問(wèn)題!防止數(shù)據(jù)錯(cuò)誤
!讓我們用例子來(lái)討論這些鎖定機(jī)制:2。條件鎖:也稱為條件變量鎖。當(dāng)兩個(gè)人去酒店吃飯,當(dāng)你去廁所,你發(fā)現(xiàn)有人(其他線程正在執(zhí)行)敲門(mén)。里面的人說(shuō):你先去吃飯,等我,我叫你哈!然后你回去等著!(沒(méi)有競(jìng)爭(zhēng)),等他準(zhǔn)備好給你打電話(喚醒線程),你就可以繼續(xù)執(zhí)行了
!4. 旋轉(zhuǎn)鎖:同一個(gè)場(chǎng)景,同一個(gè)坑!一個(gè)人已經(jīng)占了坑,但你很匆忙。你得把褲子拉出來(lái)。你該怎么辦?一直敲門(mén)(循環(huán)搜索看看你能不能拿到鎖),然后說(shuō),我趕時(shí)間!直到里面的人厭倦了出來(lái),你才進(jìn)去好好上廁所(執(zhí)行線程)!你一直在敲門(mén)(一直在使用CPU資源)
!有定時(shí)鎖、輪詢鎖、對(duì)象鎖、類鎖、顯示鎖、隱式鎖等。下次再舉個(gè)例子吧!別問(wèn)我為什么,因?yàn)槟氵€沒(méi)注意到我