linux下的C\C++多进程多线程编程实例详解
发布时间 - 2026-01-11 00:48:53 点击率:次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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
JavaScript如何实现继承_有哪些常用方法
高端智能建站公司优选:品牌定制与SEO优化一站式服务
Laravel如何实现API资源集合?(Resource Collection教程)
bing浏览器学术搜索入口_bing学术文献检索地址
百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧
Laravel如何自定义分页视图?(Pagination示例)
如何有效防御Web建站篡改攻击?
如何在IIS中新建站点并配置端口与物理路径?
Laravel如何发送系统通知?(Notification渠道示例)
jQuery中的100个技巧汇总
Laravel如何处理异常和错误?(Handler示例)
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集
微信小程序 HTTPS报错整理常见问题及解决方案
uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址
高性能网站服务器配置指南:安全稳定与高效建站核心方案
html5的keygen标签为什么废弃_替代方案说明【解答】
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
如何在景安云服务器上绑定域名并配置虚拟主机?
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
HTML 中动态设置元素 name 属性的正确语法详解
网易LOFTER官网链接 老福特网页版登录地址
如何在云指建站中生成FTP站点?
如何用AWS免费套餐快速搭建高效网站?
如何挑选优质建站一级代理提升网站排名?
Internet Explorer官网直接进入 IE浏览器在线体验版网址
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
Python数据仓库与ETL构建实战_Airflow调度流程详解
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
北京企业网站设计制作公司,北京铁路集团官方网站?
浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
中国移动官方网站首页入口 中国移动官网网页登录
如何在Windows虚拟主机上快速搭建网站?
*服务器网站为何频现安全漏洞?
,交易猫的商品怎么发布到网站上去?
如何在阿里云完成域名注册与建站?
Laravel如何处理表单验证?(Requests代码示例)
Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
Laravel怎么为数据库表字段添加索引以优化查询
如何在 Pandas 中基于一列条件计算另一列的分组均值
实例解析Array和String方法

