linux下的C\C++多进程多线程编程实例详解

1、多进程编程
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
pid_t child_pid;
/* 创建一个子进程 */
child_pid = fork();
if(child_pid == 0)
{
printf("child pid\n");
exit(0);
}
else
{
printf("father pid\n");
sleep(60);
}
return 0;
}
2、多线程编程
#include <stdio.h>
#include <pthread.h>
struct char_print_params
{
char character;
int count;
};
void *char_print(void *parameters)
{
struct char_print_params *p = (struct char_print_params *)parameters;
int i;
for(i = 0; i < p->count; i++)
{
fputc(p->character,stderr);
}
return NULL;
}
int main()
{
pthread_t thread1_id;
pthread_t thread2_id;
struct char_print_params thread1_args;
struct char_print_params thread2_args;
thread1_args.character = 'x';
thread1_args.count = 3000;
pthread_create(&thread1_id, NULL, &char_print, &thread1_args);
thread2_args.character = 'o';
thread2_args.count = 2000;
pthread_create(&thread2_id, NULL, &char_print, &thread2_args);
pthread_join(thread1_id, NULL);
pthread_join(thread2_id, NULL);
return 0;
}
3、线程同步与互斥
1)、互斥
pthread_mutex_t mutex; pthread_mutex_init(&mutex, NULL); /*也可以用下面的方式初始化*/ pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_lock(&mutex); /* 互斥 */ thread_flag = value; pthread_mutex_unlock(&mutex);
2)、条件变量
int thread_flag = 0;
pthread_mutex_t mutex;
pthread_cond_t thread_flag_cv;\
void init_flag()
{
pthread_mutex_init(&mutex, NULL);
pthread_cond_init(&thread_flag_cv, NULL);
thread_flag = 0;
}
void *thread_function(void *thread_flag)
{
while(1)
{
pthread_mutex_lock(&mutex);
while(thread_flag != 0 )
{
pthread_cond_wait(&thread_flag_cv, &mutex);
}
pthread_mutex_unlock(&mutex);
do_work();
}
return NULL;
}
void set_thread_flag(int flag_value)
{
pthread_mutex_lock(&mutex);
thread_flag = flag_value;
pthread_cond_signal(&thread_flag_cv);
pthread_mutex_unlock(&mutex);
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Linux
# 多线程详解
# 浅谈linux模拟多线程崩溃和多进程崩溃
# Linux中进程和线程的对比与区别
# Linux多线程环境下 关于进程线程终止函数总结
# linux线程切换和进程切换的方法
# linux下如何把进程/线程绑定到特定cpu核上运行
# 互斥
# 多线程
# 可以用
# 希望能
# 谢谢大家
# 创建一个
# char
# pid
# child
# printf
# sleep
# child_pid
# fork
# exit
# stdio
# nbsp
# struct
# pthread
# char_print_params
# father
相关文章:
建站主机选购指南:核心配置与性价比推荐解析
如何选择高效稳定的ISP建站解决方案?
如何在Windows环境下新建FTP站点并设置权限?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
如何通过虚拟主机快速搭建个人网站?
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
为什么Go需要go mod文件_Go go mod文件作用说明
建站主机选购指南:核心配置优化与品牌推荐方案
完全自定义免费建站平台:主题模板在线生成一站式服务
如何有效防御Web建站篡改攻击?
如何用已有域名快速搭建网站?
如何基于云服务器快速搭建网站及云盘系统?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
如何在服务器上配置二级域名建站?
如何快速搭建高效WAP手机网站?
在线教育网站制作平台,山西立德教育官网?
免费视频制作网站,更新又快又好的免费电影网站?
如何选择可靠的免备案建站服务器?
宝塔新建站点报错如何解决?
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
建站VPS选购需注意哪些关键参数?
如何通过远程VPS快速搭建个人网站?
盘锦网站制作公司,盘锦大洼有多少5G网站?
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
大连 网站制作,大连天途有线官网?
高端网站建设与定制开发一站式解决方案 中企动力
如何在云服务器上快速搭建个人网站?
网站制作的步骤包括,正确网址格式怎么写?
Swift中循环语句中的转移语句 break 和 continue
如何用y主机助手快速搭建网站?
,网页ppt怎么弄成自己的ppt?
开源网站制作软件,开源网站什么意思?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
python的本地网站制作,如何创建本地站点?
安徽网站建设与外贸建站服务专业定制方案
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
北京专业网站制作设计师招聘,北京白云观官方网站?
如何选择建站程序?包含哪些必备功能与类型?
如何撰写建站申请书?关键要点有哪些?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
济南网站制作的价格,历城一职专官方网站?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
移民网站制作流程,怎么看加拿大移民官网?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
西安大型网站制作公司,西安招聘网站最好的是哪个?
如何用IIS7快速搭建并优化网站站点?
*请认真填写需求信息,我们会在24小时内与您取得联系。