中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Mysql中ThreadManager的作用是什么-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(guān)Mysql中Thread Manager的作用是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)從2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、成都網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元平川做網(wǎng)站,已為上家服務(wù),為平川各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220

    1.線程創(chuàng)建函數(shù)

    大家知道,Mysql現(xiàn)在是插件式的存儲(chǔ)引擎,只要實(shí)現(xiàn)規(guī)定的接口,就可實(shí)現(xiàn)自己的存儲(chǔ)引擎。故Mysql的線程創(chuàng)建除了

出現(xiàn)在主服務(wù)器框架外,存儲(chǔ)引擎也可能會(huì)進(jìn)行線程的創(chuàng)建。通過設(shè)置斷點(diǎn),在我調(diào)試的版本中,發(fā)現(xiàn)了兩個(gè)創(chuàng)建線程的函數(shù)。

    os_thread_create是存儲(chǔ)引擎innobase的線程函數(shù),先擱淺不研究了,重點(diǎn)看下pthread_create,首先看下其源碼。

map->func=func; map->param=param;

hThread=(HANDLE)_beginthread((void( __cdecl *)(void *)) pthread_start, attr->dwStackSize ? attr->dwStackSize : 65535, (void*) map);

上面代碼首先構(gòu)造了一個(gè)map結(jié)構(gòu)體,成員分別是函數(shù)地址和傳入?yún)?shù)。然后調(diào)用操作系統(tǒng)的接口,_beginthread,但是執(zhí)行函數(shù)并不是傳入的函數(shù)——func,而是pthread_start,參數(shù)為map。繼續(xù)跟蹤pthread_start。

func=((struct pthread_map *) param)->func

   可以看出,pthread_start中調(diào)用了map的func元素,作為真正執(zhí)行的函數(shù)體。OK,創(chuàng)建線程的函數(shù)跟蹤到此!

   2.服務(wù)器啟動(dòng)時(shí)創(chuàng)建了哪些函數(shù)?

   通過在兩個(gè)創(chuàng)建線程的地方設(shè)置斷點(diǎn),總結(jié)了下,在服務(wù)器啟動(dòng)時(shí),創(chuàng)建了如下的線程。

pthread_create創(chuàng)建的線程

innobase的os_thread_create創(chuàng)建的線程:

    還可以在調(diào)試過程中,通過暫停來看此時(shí)服務(wù)器中的線程,如下圖:

三、線程緩沖池

        Mysql支持線程緩存,在多線程連接模式下,如果連接斷開后,將這個(gè)線程放入空閑線程緩沖區(qū),在下次有連接到來時(shí),

先去緩沖池中查找是否有空閑線程,有則用之,無則創(chuàng)建。啟動(dòng)時(shí)可以設(shè)置線程緩沖池的數(shù)目:

      在一個(gè)連接斷開時(shí),會(huì)調(diào)用cache_thread函數(shù),將空閑的線程加入到cache中,以備后用。如下:

cached_thread_count < thread_cache_size

pthread_cond_signal(&COND_flush_thread_cache);

    上面我們的啟動(dòng)參數(shù)設(shè)置線程緩沖區(qū)為10,此時(shí)對應(yīng)代碼里面的thread_cache_size = 10,cached_thread_count記錄

了此刻cache中的空閑線程數(shù)目,只有在cache未滿的情況下,才會(huì)將新的空閑線程加入緩沖池中。加入到緩沖區(qū)其實(shí)就是將線

程掛起,pthread_cond_wait函數(shù)便是線程等待函數(shù),在此函數(shù)中,會(huì)調(diào)用WaitForMultipleObjects進(jìn)行事件等待。具體源碼

如下:

result= WaitForMultipleObjects(2, cond->events, FALSE, timeout);

    此處是等待時(shí)間,何處進(jìn)行事件通知呢?我們再次來到上篇所提及的為新的連接創(chuàng)建線程的代碼中:

pthread_cond_signal(&COND_thread_cache);

看完上述內(nèi)容,你們對Mysql中Thread Manager的作用是什么有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

本文標(biāo)題:Mysql中ThreadManager的作用是什么-創(chuàng)新互聯(lián)
文章源于:http://www.rwnh.cn/article20/hcoco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、企業(yè)網(wǎng)站制作、定制網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)面包屑導(dǎo)航、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)
玛纳斯县| 平安县| 黄梅县| 建平县| 莒南县| 丹东市| 临夏市| 郴州市| 关岭| 太谷县| 甘泉县| 焉耆| 苏尼特左旗| 鄂托克前旗| 苍山县| 三台县| 绵阳市| 府谷县| 紫金县| 洪雅县| 浮山县| 科技| 鲁甸县| 沧源| 嘉义市| 新河县| 武威市| 霸州市| 隆德县| 淮阳县| 七台河市| 卢龙县| 永清县| 金沙县| 股票| 长汀县| 来凤县| 无为县| 六枝特区| 修武县| 民丰县|