麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > C > 正文

基于內(nèi)核線程的創(chuàng)建、使用和退出以及延時(shí)宏的補(bǔ)充說明介紹

2020-01-26 16:18:12
字體:
供稿:網(wǎng)友

相關(guān)函數(shù):

kthread_create():創(chuàng)建內(nèi)核線程

復(fù)制代碼 代碼如下:

struct task_struct *kthread_create(int (*threadfn)(void *data), void *data, const char namefmt[], ...);  kernel thread可以用kernel_thread創(chuàng)建,但是在執(zhí)行函數(shù)里面必須用daemonize釋放資源并掛到init下,還需要用completion等待這一過程的完成。為了簡(jiǎn)化操作,定義了kthread_create。

線程創(chuàng)建后,不會(huì)馬上運(yùn)行,而是需要將kthread_create() 返回的task_struct指針傳給wake_up_process(),然后通過此函數(shù)運(yùn)行線程。
 

kthread_run():創(chuàng)建并啟動(dòng)線程的函數(shù)。

復(fù)制代碼 代碼如下:

struct task_struct *kthread_run(int (*threadfn)(void *data),void *data,const char *namefmt, ...);它實(shí)際上是個(gè)宏,由kthread_create()和wake_up_process()組成。

它實(shí)際上是個(gè)宏,由kthread_create()和wake_up_process()組成。
復(fù)制代碼 代碼如下:

#define kthread_run(threadfn, data, namefmt, ...)                     /

({                                                            /

    struct task_struct *__k                                        /

           = kthread_create(threadfn, data, namefmt, ## __VA_ARGS__); /

    if (!IS_ERR(__k))                                        /

           wake_up_process(__k);                                /

    __k;                                                     /

})


kthread_stop():通過發(fā)送信號(hào)給線程,使之退出。
復(fù)制代碼 代碼如下:

int kthread_stop(struct task_struct *thread);

線程一旦啟動(dòng)起來后,會(huì)一直運(yùn)行,除非該線程主動(dòng)調(diào)用do_exit函數(shù),或者其他的進(jìn)程調(diào)用kthread_stop函數(shù),結(jié)束線程的運(yùn)行。
但如果線程函數(shù)正在處理一個(gè)非常重要的任務(wù),它不會(huì)被中斷的。當(dāng)然如果線程函數(shù)永遠(yuǎn)不返回并且不檢查信號(hào),它將永遠(yuǎn)都不會(huì)停止。

同時(shí),在調(diào)用kthread_stop函數(shù)時(shí),線程函數(shù)不能已經(jīng)運(yùn)行結(jié)束。否則,kthread_stop函數(shù)會(huì)一直進(jìn)行等待。

 

內(nèi)核線程的一般框架

int threadfunc(void *data){

        …

        while(1){

               set_current_state(TASK_UNINTERRUPTIBLE);

               if(kthread_should_stop()) break;

               if(){//條件為真

                      //進(jìn)行業(yè)務(wù)處理

               }

               else{//條件為假

                      //讓出CPU運(yùn)行其他線程,并在指定的時(shí)間內(nèi)重新被調(diào)度

                      schedule_timeout(HZ);

               }

        }

        …

        return 0;

}

 

線程相關(guān)測(cè)試命令

  可以使用top命令來查看線程(包括內(nèi)核線程)的CPU利用率。命令如下:

    top

主站蜘蛛池模板: 日本精品视频一区二区三区四区 | 精品国内视频 | 91国内精品久久久久免费影院 | 欧美综合在线观看视频 | 中文字幕一区二区三区久久 | 在线亚洲综合 | 免费国产人成网站 | 亚洲精品成人av在线 | 久久艹精品 | 美女视频黄a视频免费全过程 | 色婷婷一区二区三区 | 国产精品视频一区二区三区四区国 | 黄色片网站免费观看 | 国产91中文字幕 | 国产成人精品一区二区三区电影 | 精品亚洲综合 | 亚洲福利在线免费观看 | 毛片在线免费观看完整版 | 国产成人精品午夜 | 羞羞的视频免费在线观看 | 中国a级黄色片 | 特级毛片a级毛片100免费 | 姑娘第四集免费看视频 | 国产成视频在线观看 | 精品乱码久久久久 | 免费a级黄色片 | 在线观看一二三 | 中文字幕涩涩久久乱小说 | 视频一区二区不卡 | 免费一区区三区四区 | 黄色片网站在线免费观看 | 嫩草影院在线观看网站成人 | 国产一区日韩一区 | 91精品国产日韩91久久久久久360 | 国产一区二区三区精品在线观看 | 97久久日一线二线三线 | 99riav国产在线观看 | 欧美日本国产精品 | 一级性色 | 日韩一级片一区二区三区 | 成码无人av片在线观看网站 |