[發(fā)明專利]一種線程的喚醒方法及裝置,存儲(chǔ)介質(zhì)和電子設(shè)備有效
| 申請(qǐng)?zhí)枺?/td> | 201811598081.4 | 申請(qǐng)日: | 2018-12-26 |
| 公開(公告)號(hào): | CN111367625B | 公開(公告)日: | 2023-05-09 |
| 發(fā)明(設(shè)計(jì))人: | 汪翔 | 申請(qǐng)(專利權(quán))人: | 阿里巴巴集團(tuán)控股有限公司 |
| 主分類號(hào): | G06F9/46 | 分類號(hào): | G06F9/46;G06F9/48;G06F16/182;G06F16/903 |
| 代理公司: | 北京清源匯知識(shí)產(chǎn)權(quán)代理事務(wù)所(特殊普通合伙) 11644 | 代理人: | 馮德魁;竇曉慧 |
| 地址: | 英屬開曼群島大開*** | 國(guó)省代碼: | 暫無(wú)信息 |
| 權(quán)利要求書: | 查看更多 | 說(shuō)明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 線程 喚醒 方法 裝置 存儲(chǔ) 介質(zhì) 電子設(shè)備 | ||
本申請(qǐng)公開一種線程的喚醒方法及裝置,分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)處理方法及裝置,計(jì)算機(jī)存儲(chǔ)介質(zhì)及電子設(shè)備;所述喚醒方法包括:根據(jù)當(dāng)前執(zhí)行線程中針對(duì)訪問操作請(qǐng)求的預(yù)寫操作的成功結(jié)果,獲取所述預(yù)寫操作對(duì)應(yīng)的當(dāng)前寫入線程的等待標(biāo)識(shí);其中,所述當(dāng)前寫入線程與所述當(dāng)前執(zhí)行線程相對(duì)應(yīng);根據(jù)所述當(dāng)前寫入線程的等待標(biāo)識(shí),確定喚醒線程喚醒執(zhí)行線程的喚醒范圍;根據(jù)所述喚醒范圍,喚醒所述執(zhí)行線程;進(jìn)而避免因無(wú)效喚醒導(dǎo)致的系統(tǒng)性能較差的問題,提高系統(tǒng)的吞吐量;以及在喚醒過(guò)程是基于版本號(hào)完成,因此,該喚醒方法適用于多種場(chǎng)景下的阻塞?喚醒機(jī)制,具有一定通用性。
技術(shù)領(lǐng)域
本申請(qǐng)涉及計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,具體涉及一種線程的喚醒方法和裝置,以及一種分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)處理方法及裝置;本申請(qǐng)同時(shí)還涉及一種計(jì)算機(jī)存儲(chǔ)介質(zhì)和電子設(shè)備。
背景技術(shù)
隨著數(shù)據(jù)量不斷快速膨脹,傳統(tǒng)數(shù)據(jù)庫(kù)在大數(shù)據(jù)上的處理性能已不能滿足需求,非結(jié)構(gòu)化分布式數(shù)據(jù)庫(kù)應(yīng)運(yùn)而生。
非結(jié)構(gòu)化分布式數(shù)據(jù)庫(kù)進(jìn)行讀寫操作請(qǐng)求時(shí),為保證數(shù)據(jù)的穩(wěn)定性,需要預(yù)先通過(guò)WAL(Write-Ahead-Log)機(jī)制對(duì)操作請(qǐng)求的數(shù)據(jù)進(jìn)行預(yù)寫,以避免在出現(xiàn)異常情況下,數(shù)據(jù)丟失的問題,具體地,非結(jié)構(gòu)化分布式數(shù)據(jù)庫(kù)在對(duì)數(shù)據(jù)進(jìn)行讀寫操作時(shí),通過(guò)使用Handler線程處理讀寫請(qǐng)求,每個(gè)寫請(qǐng)求在Handler處理過(guò)程中都會(huì)涉及到一到多次寫WAL的行為。因此Handler需要等待寫WAL完成后才能進(jìn)行下一步動(dòng)作。在WAL執(zhí)行過(guò)程中,需要通過(guò)阻塞-喚醒機(jī)制來(lái)實(shí)現(xiàn)Handler線程的阻塞或喚醒,具體地,當(dāng)WAL執(zhí)行寫操作的過(guò)程中,Handler線程會(huì)被阻塞從而能夠釋放CPU的使用權(quán);當(dāng)WAL完成寫操作后再喚醒Handler線程進(jìn)行相應(yīng)的讀寫操作。
現(xiàn)有技術(shù)提供的阻塞-喚醒實(shí)現(xiàn)過(guò)程中,需要通過(guò)互斥鎖實(shí)現(xiàn)阻塞與喚醒的切換,例如:Handler線程等待txid=5的WAL完成。Notifier線程通知Handler線程時(shí),需要先獲取ObjectMonitor的鎖Lock,并將FinishedTxid設(shè)置為5,然后將所有正在等待Handler線程設(shè)置為可運(yùn)行狀態(tài)Runnable。持鎖期間,所有其他的Handler線程均無(wú)法讀取FinishedTxid的值。Handler線程搶到鎖后Lock,方能讀取FinishedTxid的值,并根據(jù)讀取FinishedTxid的值判斷是否滿足Handler線程等待的條件。
現(xiàn)有技術(shù)中涉及的ObjectMonitor阻塞-喚醒機(jī)制的缺陷在于:
1、所有讀寫操作均需要拿鎖Lock,拿鎖Lock時(shí)讀寫操作互斥,相當(dāng)于同一時(shí)間內(nèi)只有一個(gè)線程可以在臨界區(qū)內(nèi)活動(dòng)。同一時(shí)刻只有一個(gè)線程被允許讀取FinishedTxid的值。
2、當(dāng)Handler線程進(jìn)入等待狀態(tài)時(shí),需要將自身注冊(cè)至ObjectMonitor的等待隊(duì)列,而該注冊(cè)過(guò)程必須在臨界區(qū)內(nèi)完成。
3、Notifier線程喚醒Handler線程時(shí),需要將Handler線程從ObjectMonitor的等待隊(duì)列中移除之后,再進(jìn)行喚醒。
4、基于上述1-3點(diǎn),Notifier線程每次都喚醒所有線程,而并不是所有線程都的等待條件都能夠滿足喚醒的條件,因此,存在許多無(wú)效喚醒,造成喚醒性能較差。
發(fā)明內(nèi)容
本申請(qǐng)?zhí)峁┮环N線程的喚醒方法,以解決現(xiàn)有技術(shù)中由于無(wú)效喚醒導(dǎo)致的性能問題。
本申請(qǐng)?zhí)峁┮环N線程的喚醒方法,包括:
根據(jù)當(dāng)前執(zhí)行線程中針對(duì)訪問操作請(qǐng)求的預(yù)寫操作的成功結(jié)果,獲取所述預(yù)寫操作對(duì)應(yīng)的當(dāng)前寫入線程的等待標(biāo)識(shí);其中,所述當(dāng)前寫入線程與所述當(dāng)前執(zhí)行線程相對(duì)應(yīng);
根據(jù)所述當(dāng)前寫入線程的等待標(biāo)識(shí),確定喚醒線程喚醒執(zhí)行線程的喚醒范圍;
根據(jù)所述喚醒范圍,喚醒所述執(zhí)行線程。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于阿里巴巴集團(tuán)控股有限公司,未經(jīng)阿里巴巴集團(tuán)控股有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811598081.4/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 在多線程處理器中用于高速線程間中斷的方法和設(shè)備
- 一種多線程系統(tǒng)中實(shí)現(xiàn)實(shí)時(shí)監(jiān)控各線程狀態(tài)的方法
- 移動(dòng)終端系統(tǒng)線程池實(shí)現(xiàn)方法及裝置
- 一種基于策略模式的信號(hào)發(fā)生器多線程管理方法
- 多線程并發(fā)處理方法和多線程并發(fā)處理系統(tǒng)
- 分布式系統(tǒng)的線程管理方法和裝置
- 線程執(zhí)行方法、裝置、終端及存儲(chǔ)介質(zhì)
- 線程監(jiān)控方法、裝置、電子設(shè)備及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)
- 一種多核系統(tǒng)中多線程調(diào)度方法、裝置及設(shè)備
- 線程間通信方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)
- 一種數(shù)據(jù)庫(kù)讀寫分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測(cè)試終端的測(cè)試方法
- 一種服裝用人體測(cè)量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測(cè)程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)





