掃描二維碼
隨時隨地手機看文章
“為了減少進程切換和創(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(