IT培训机构|91免费精品视频|专注编程培训|91免费精品|软件开发培训_91免费国产视频_华清远见教育

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > linux c 多線程編程實例

linux c 多線程編程實例 時間:2018-01-26      來源:未知

在主流的操作系統中,多任務一般都提供了進程和線程兩種實現方式,進程享有獨立

的進程空間,而線程相對于進程來說是一種更加輕量級的多任務并行,多線程之間一般都是共

享所在進程的內存空間的。

Linux也不例外,雖然從內核的角度來看,線程體現為一種對進程的"克隆"(clone),共

享進程的資源。但是在用戶空間提供了線程管理機制來實現對線程的管理,目前Linux中流行

的線程機制為LinuxThreads,下面以一個多線程編程實例來介紹該線程庫的編程接口:

示例1:線程的創建和退出,等待線程結束和獲取線程的返回值

#include

#include

#include

/************************************************************

*線程函數:線程運行執行的函數

*參數p:通用類型的指針,啟動線程時傳遞給線程函數的參數

*返回值:通用類型指針,線程結束后啟動線程的函數可以獲取該值

*************************************************************/

void* task(void* p){

double r = *(double*)p;

printf("%lf\n",3.14*r*r);

}

void* task2(void* p){

static int sum = 0;

int i;

for(i=1;i<11;i++)

sum = sum+i;

return ∑

//pthread_exit(&sum);線程退出,和return等價

}

int main(){

pthread_t id1,id2;

double d = 1.0;

int* pi = NULL;

/*

*創建線程函數,在主線程中調用該函數可以創建線程

*參數1:線程ID,ID由系統分配,該參數是一個傳出參數,類型為pthread_t *

*參數2:線程屬性,使用默認屬性給0即可,類型為pthread_attr_t *

*參數3:線程函數,即線程運行時代碼,類型為void *(*)(void *)

*參數4:傳遞給線程函數的參數

*/

pthread_create(&id1,0,task,&d);//計算圓的面積

pthread_create(&id2,0,task2,0);//計算累加和

/*

*等待線程結束函數,用于在一個線程中等待另外一個線程結束

*參數1:要等待結束的線程的ID

*參數2:結束線程的返回值的地址(由于是傳出參數,所以是返回值的地址)

*/

pthread_join(id1,0);

pthread_join(id2,(void**)&pi);//pi=∑

printf("sum=%d\n",*pi);

return 0;

}

此外,我們還可以設置線程的屬性,下面介紹設置線程分離屬性的代碼

示例2:設置線程的分離屬性

#include

#include

//線程函數

void* task(void* p){

int i;

for(i=0;i<50;i++){

printf("%d\n",i);

usleep(100000);//0.1秒

}

}

int main(){

pthread_t id;

pthread_create(&id,0,task,0);

/*

*將線程設置為分離屬性,分離屬性的線程一旦結束,直接回收資源

*因此當線程設置為分離屬性后將無法再等待線程結束和獲取線程的返回值

*參數:設置分離屬性的線程ID

*/

pthread_detach(id);//detach的線程join

//pthread_join(id,0);//無效

int i;

for(i=0;i<50;i++){

printf("main:%d\n",i);

usleep(100000);//0.1秒

}

}

由于多線程之間是共享進程資源的,所以多線程編程時需要對共享資源的訪問進行保護

包括互斥和同步,常用的方式包括互斥鎖和信號量

示例3:互斥鎖的使用

#include

#include

char* data[5];//定義一個長度是5字符串數組

int size = 0;//定義了當前下標,也是人數

pthread_mutex_t lock;//1 聲明

void* task(void* p){

pthread_mutex_lock(&lock);//3 加鎖

data[size] = (char*)p; //4 訪問共享資源

usleep(10000); ++size;

pthread_mutex_unlock(&lock);//5 解鎖

}

int main(){

data[size] = "liubei"; size++;

pthread_mutex_init(&lock,0);//2 初始化

pthread_t id1,id2;

pthread_create(&id1,0,task,"zhangfei");

pthread_create(&id2,0,task,"guanyu");

pthread_join(id1,0);

pthread_join(id2,0);

pthread_mutex_destroy(&lock);//6 刪除

int i;

for(i=0;i

printf("%s\n",data[i]);

}

示例4:信號量的使用

#include

#include

#include

#include

sem_t sem; //1 分配

void* task(void* p){

int i = (int)p;

printf("第%d個線程申請連接\n",i);

sem_wait(&sem);//3 P操作(計數-1)

printf("第%d個線程申請成功\n",i);

srand(time(0));//4 模擬訪問共享資源

sleep(rand()%10);

printf("第%d個線程釋放資源\n",i);

sem_post(&sem);//5 V操作(計數+1)

}

int main(){

sem_init(&sem,0,10);//2 初始化

int i;

for(i=1;i<16;i++){

pthread_t id;

pthread_create(&id,0,task,(void*)i);

}

while(1);

}

上一篇:嵌入式linux啟動過程分析

下一篇:linux和ubuntu的區別在哪

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 注塑加工,无锡塑料件加工,注塑模具加工厂家-无锡富立康精密模塑有限公司 | 襄阳燃烧器厂家-低氮燃烧器价格-河北五通道燃烧器就找襄阳市胜合燃力设备有限公司一站式服务 | 西克制冷官网│制冷机组冷风机冷库设备厂家-西克制冷(无锡)有限公司_西克制冷(无锡)有限公司 | 太阳能杀虫灯-农业用杀虫灯-果园灭虫灯厂家「尚科杀虫灯| | 四通球阀_304真空阀_不锈钢五通球阀厂家-浙江壬丰阀门有限公司 | 九江东盛机械制造有限公司| 上饶市新达新包装材料有限公司 | 深圳危化品经营许可证_危险化学品经营许可证办理 | 山东健泽医疗科技有限公司-官网_深呼吸训练器_肋骨固定板_放疗定位膜耗材生产厂家招商 | 室内去除甲醛检测治理十大品牌_去除甲醛公司加盟-优吸环保科技有限公司集团总部官网 | 南宁清洁公司|外墙清洗|开荒清洁|洒水车|管道疏通|园林绿化_广西优而美环境工程有限公司 | 全彩LED显示屏厂家_室内户外电子屏-深圳华邦瀛光电有限公司 | 压瓦机|C型钢机|彩钢设备|C/Z互换檩条机-河北玉发压瓦机 | 一体式电磁流量计_分体式电磁流量计_卫生级电磁流量计_卫生型电磁流量计_电池供电电磁流量计_卡箍式电磁流量计_废水电磁流量计_德克森仪表(淮安)有限公司官网 | 企好网 - 中国B2B产业互联网践行者|百度爱采购官方授权一级服务商 | 热门网页游戏平台_页游排行榜_新开网页游戏开服表_599游戏 | 泥浆振动筛|卧式泥浆搅拌器|泥浆离心机|泥浆处理固控设备_沧州宏宇石油机械有限公司 | 南通众诚数控机床有限公司-液压机,剪板机,折弯机,卷板机,液压冲床,路灯杆设备专业制造商 | 南通搬运公司|吊车租赁|大件吊装|设备搬运|工厂搬迁|起重吊装搬运-顺林搬运 | 长春互联网运营值选星广传媒,长春短视频运营,长春新媒体运营,长春互联网运营,长春抖音运营,吉林视频号代运营,吉林快手代运营,短视频推广公司,公众号运营,微博运营,新媒体运营 | 上饶建盛建设,建盛建设,上饶市建盛建设工程质量检测有限公司-房屋鉴定 | 思为网络_成都百度优化快照排名-成都网站建设优化_成都网页设计_成都SEO公司 | 深圳展厅设计_产业园区展馆设计_展馆设计公司_健康产业展馆设计_展厅设计哪家好_华竣国际 | 移动石料破碎机-颚式锤式反击式破碎机设备厂家_山东.青州富康机械 | 上海上市答谢酒会_企业年会_新品上市发布会_周年/开业庆典_会议会务_活动策划布置演出公司 | 形创(CREAFORM)3D扫描仪|三维检测|三维数字化处理|3D设备租赁|3D打印|——北京中显恒业仪器仪表有限公司 | 眉山净源居环保科技有限公司,眉山除甲醛公司,眉山甲醛治理,眉山保洁服务,眉山家政保洁,眉山家电维修 - 眉山净源居环保科技有限公司,眉山除甲醛公司,眉山甲醛治理,眉山保洁服务,眉山家政保洁,眉山家电维修 | 环保除尘设备_燃气/燃油热水锅炉_光氧空气净化器_蒸汽玉米压片机_压片设备_烘干设备-山东金盾节能环保设备有限公司 | 摩托车-摩托车配件-摩托车与配件_摩托车与配件行业权威的门户网站! | 黑料网 - 黑料大事记-黑料门 黑料社最新 今日黑料 热门黑料 最新反差免费-黑料网今日黑料首页_黑料网 - 黑料大事记-黑料门 黑料社最新 今日黑料 热门黑料 最新反差免费-黑料网今日黑料首页 | 曙海培训-仿真培训Linux培训html5培单片机培训PCB培训python培训PLC培训C语言培训android培训物联网培训无线电培训欧姆龙培训工业机器人培训5G培训Hadoop培训CFD培训项目外包开发咨询 | 宁波华路德|交通信号灯|交通信号机|太阳能信号灯|交通警示灯|交通信号灯厂家 | 木马交互设计研究中心 ,专注于用户体验与人机交互设计 - 首页 | 托辊|滚筒|聚氨酯托辊|缓冲托辊|尼龙托琨|衡水良龙输送机械有限公司 | 实木中药柜,实木中药斗,木制中药柜,木制中药柜的价格,实木中草药柜,安国美佳中药柜厂家 | 山东土工膜_复合土工膜_防水板生产厂家-山东德旭达土工材料有限公司 | 西安生殖医学医院_陕西省老医协生殖医学医院【官方网站】 | 拍照机,地铁自助拍证件照机器,校园自助打印机,智能自助复印机 | 威学一百-专注国际学校择校备考-DSE-A-level-雅思-托福-OSSD-港澳台联考-AP-IGCSE-IB-AMC-多邻国-PTE-SAT-SSAT-小语种(如日语,韩语,德语,法语,西班牙语,意大利语,俄语,泰语)等考试培训,为出国留学学生提供个性化定制性学习方案,线下实体面授+线上网络课程, 提供一对一,小班课等多种班型 | 喷涂流水线,喷漆流水线-山东天意设备科技 | 煤泥烘干机,酒糟烘干机,药渣烘干机,酵母烘干机,烘干机厂家-瑞奥新能源 |