91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mysql中Thread Manager的作用是什么

發布時間:2021-08-04 17:24:25 來源:億速云 閱讀:138 作者:Leah 欄目:數據庫

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

    1.線程創建函數

    大家知道,Mysql現在是插件式的存儲引擎,只要實現規定的接口,就可實現自己的存儲引擎。故Mysql的線程創建除了

出現在主服務器框架外,存儲引擎也可能會進行線程的創建。通過設置斷點,在我調試的版本中,發現了兩個創建線程的函數。

    os_thread_create是存儲引擎innobase的線程函數,先擱淺不研究了,重點看下pthread_create,首先看下其源碼。

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

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

上面代碼首先構造了一個map結構體,成員分別是函數地址和傳入參數。然后調用操作系統的接口,_beginthread,但是執行函數并不是傳入的函數——func,而是pthread_start,參數為map。繼續跟蹤pthread_start。

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

   可以看出,pthread_start中調用了map的func元素,作為真正執行的函數體。OK,創建線程的函數跟蹤到此!

   2.服務器啟動時創建了哪些函數?

   通過在兩個創建線程的地方設置斷點,總結了下,在服務器啟動時,創建了如下的線程。

pthread_create創建的線程

innobase的os_thread_create創建的線程:

    還可以在調試過程中,通過暫停來看此時服務器中的線程,如下圖:

三、線程緩沖池

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

先去緩沖池中查找是否有空閑線程,有則用之,無則創建。啟動時可以設置線程緩沖池的數目:

      在一個連接斷開時,會調用cache_thread函數,將空閑的線程加入到cache中,以備后用。如下:

cached_thread_count < thread_cache_size

pthread_cond_signal(&COND_flush_thread_cache);

    上面我們的啟動參數設置線程緩沖區為10,此時對應代碼里面的thread_cache_size = 10,cached_thread_count記錄

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

程掛起,pthread_cond_wait函數便是線程等待函數,在此函數中,會調用WaitForMultipleObjects進行事件等待。具體源碼

如下:

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

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

pthread_cond_signal(&COND_thread_cache);

看完上述內容,你們對Mysql中Thread Manager的作用是什么有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

卢氏县| 大足县| 湘乡市| 曲松县| 颍上县| 黔江区| 全南县| 景谷| 韩城市| 吴忠市| 巩留县| 视频| 孟州市| 馆陶县| 永昌县| 博湖县| 金乡县| 怀集县| 师宗县| 赤壁市| 鸡东县| 新津县| 塔城市| 碌曲县| 海安县| 信阳市| 团风县| 汕尾市| 阳信县| 丹阳市| 明水县| 神池县| 九龙城区| 镇雄县| 砚山县| 尉氏县| 崇左市| 德惠市| 乐东| 高密市| 安泽县|