當(dāng)前位置:首頁 > 公眾號精選 > 嵌入式大雜燴
[導(dǎo)讀]點擊藍字關(guān)注我們本文探討PODIX線程相關(guān)內(nèi)容。線程的概念什么是多線程,提出這個問題的時候,我還是很老實的拿出操作系統(tǒng)的書,按著上面的話敲下“為了減少進程切換和創(chuàng)建開銷,提高執(zhí)行效率和節(jié)省資源,我們引入了線程的概念,與進程相比較,線程是CPU調(diào)度的一個基本單位。”當(dāng)Linux最初...



本文探討PODIX線程相關(guān)內(nèi)容。


線程的概念

什么是多線程,提出這個問題的時候,我還是很老實的拿出操作系統(tǒng)的書,按著上面的話敲下“為了減少進程切換和創(chuàng)建開銷,提高執(zhí)行效率和節(jié)省資源,我們引入了線程的概念,與進程相比較,線程是CPU調(diào)度的一個基本單位。”


當(dāng) Linux 最初開發(fā)時,在內(nèi)核中并不能真正支持線程。那為什么要使用多線程?


使用多線程的理由之一是和進程相比,它是一種非常"節(jié)儉"的多任務(wù)操作方式。運行于一個進程中的多個線程,它們彼此之間使用相同的地址空間,共享大部分?jǐn)?shù)據(jù),啟動一個線程所花費的空間遠遠小于啟動一個進程所花費的空間,而且,線程間彼此切換所需的時間也遠遠小于進程間切換所需要的時間。


那么線程是干什么的呢?簡要概括下線程的職責(zé):線程是程序中完成一個獨立任務(wù)的完整執(zhí)行序列。


線程的管理

創(chuàng)建線程

#include
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg)
;
- thread:線程id,唯一標(biāo)識


- attr:線程屬性,參數(shù)可選


- start_routine:線程執(zhí)行函數(shù)


- arg:傳遞給線程的參數(shù)


Demo1:創(chuàng)建一個線程


#include
#include

void *workThreadEntry(void *args)
{
char*str = (char*)args;
printf("threadId:%lu,argv:%s\n",pthread_self(),str);
}
int main(int argc,char *agrv[])
{
pthread_t thread_id;
char*str = "hello world";
pthread_create(
本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。

嵌入式大雜燴

461 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉