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

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

1、多进程编程

#include

#include

#include

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

#include

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);

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/525828.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

避免大规模故障的微服务架构设计之道

作者&#xff1a;Pter Mrton 译者&#xff1a;Jackyrong 本文首先介绍微服务架构存在的风险&#xff0c;然后针对如何避免微服务架构的故障&#xff0c;提出了多种有效的微服务架构中的方法和技术&#xff0c;其中例如服务降级、变更管理、健康检查和修复、断路器、限流器等。…

linux下进程监听端口,linux下查看监听端口对应的进程

方法一1.通过lsof命令查看PIDipv4[roottest proc]# lsof -Pnl M -i4COMMAND PID USER FD TYPE DEVICE SIZE NODE NAMEjava 1419 1401 10u IPv4 6793357 TCP *:8453 (LISTEN)AutonomyD 6147 1401 6u IPv4 7597365 TCP *:20003 …

linux 内核裁剪的具体过程和方法,Linux内核裁剪的具体过程和方法

Linux内核裁剪的具体过程和方法这是我前段时间自己整的一份&#xff0c;内核功能&#xff1a;能够完成系统的基本功能&#xff0c;上网&#xff0c;收发邮件等&#xff0c;支持xwindows图形界面。在menuconfig中配置&#xff1a;详细介绍内核配置选项及删改情况第一部分&#x…

AI 线上峰会 | 人工智能技术解析与实战

10月28日&#xff0c; SDCC 2017“人工智能技术实战线上峰会”将在CSDN学院以直播互动的方式举行。 如今人工智能已不单单是发表学术论文、刷新正确率的竞赛&#xff0c;抑或全民参与的新闻事件&#xff0c;它早在为各行各业的先行者们创造着实实在在的利润和商业价值。而且&am…

linux mysql 存储过程乱码,mysql存储过程中 乱码问题解决办法

中文乱码无论在何时都是一个头疼的问题&#xff0c;mysql的存储过程参数也同样存在这个问题。1、直接使用insert into语句没问题&#xff0c;能够正常插入汉字。2、把insert into语句移到Procedure中后&#xff0c;就无法插入汉字了。在客户端软件中插入的汉字总是为乱码&#…

五阿哥钢铁电商资深运维工程师手把手教你这样玩企业组网

虽说干的是信息化智能化的行当&#xff0c;但每个IT工程师都必定踩过“IT系统不智能”的坑。就拿企业组建局域网来说&#xff0c;为了对网络接入用户身份进行确认&#xff0c;确保用户权限不受办公地点变更的影响&#xff0c;许多IT工程师都习惯开启 “手动模式”和苦逼的“加班…

linux程序 option,long-option.c/解析命令行参数

#include //继续ing。。。#include "version-etc.h"//初始化结构体static struct option const long_options[] {{"help", no_argument, NULL, h},{"version", no_argument, NULL, v},{NULL, 0, NULL, 0}};这里贴一下从网上找到的中文解释(出自h…

预告:Intel、Hulu、阿里、京东、携程等大数据实战直播

前言&#xff1a;由CSDN主办的SDCC 2017之大数据技术实战线上峰会将在CSDN学院举行。作为SD系列技术峰会的一部分&#xff0c;本次线上峰会秉承干货实料&#xff08;案例&#xff09;的内容原则&#xff0c;将邀请圈内顶尖的布道师、技术专家和技术引领者&#xff0c;共话大数据…

Linux添加gcc软连接,linux静态库,动态库和硬链接,软连接

静态库&#xff11;、命令gcc -c a.c b.c生成a.o和b.o&#xff1b;&#xff12;、命令ar -r libname.a a.o b.o生成包含名为libname.a的静态库&#xff1b;&#xff13;、命令gcc main.c libname.a可以在main中链接静态库libname.a。动态库(共享库)&#xff11;、命令gcc -c a.…

微服务应用容器化场景中常见问题总结

简介&#xff1a;云原生技术栈是下一代应用转型的必然选择&#xff0c;它包含了微服务架构&#xff0c;DevOps和容器技术。对于微服务架构来说&#xff0c;应用是“第一公民”&#xff0c;他逐渐蚕食原来底层软件或者硬件的功能&#xff0c;例如服务注册与发现以及负载均衡&…

linux用date指令,Linux中date指令的使用

1. 只输入date就会显示年月日时间二&#xff0e;date的设置 使用 -s设置时间和日期的的命令1..date –s 11:32:342..date –s 20101232就会显示年月日&#xff0c;但这样会把时间清零3..date –s ‘2010-10-2 11:22:21’这样就会显示修改的信息4.. date –s “2010-10-2 11:22…

Swarm的进化和大规模应用

目前在容器编排领域&#xff0c;Kubernetes、Mesos以及Swarm呈现“三分天下”的格局&#xff0c;各自都有着不同的应用场景。短期内&#xff0c;很难看到“一统天下”的局面&#xff0c;本文&#xff0c;来自阿里云高级专家陈萌辉将带你了解阿里内部在推行容器化过程中的一些着…

linux可以用dos命令是什么意思,Linux系统常用命令与DOS命令的类似之处和本质区别各是什么?...

满意答案iedsa3641推荐于 2019.09.13采纳率&#xff1a;56% 等级&#xff1a;8已帮助&#xff1a;361人Linux是一个非常优秀的操作系统&#xff0c;与MS&#xff0d;WINDOWS相比具有可靠、稳定、速度快等优点&#xff0c;且拥有丰富的根据UNIX版本改进的强大功能。下面做一个…

从 0 到 300,Instagram 创始人 CTO 分享工程团队成长的经验

最初&#xff0c;Instagram 被 Facebook 收购时公司只有六个工程师&#xff0c;且都是全栈。本文Instagram 创始人兼 CTO Mike Krieger 分享了创业初期并在资源有限的情况下&#xff0c;人才招聘、技术专攻的实践经验&#xff0c;将时间、精力用在最有价值的地方。以下为译文&a…

深度揭秘Twitter的新一代流处理引擎Heron

流计算又称实时计算&#xff0c;是继以Map-Reduce为代表的批处理之后的又一重要计算模型。随着互联网业务的发展以及数据规模的持续扩大&#xff0c;传统的批处理计算难以有效地对数据进行快速低延迟处理并返回结果。由于数据几乎处于不断增长的状态中&#xff0c;及时处理计算…

linux生成图片快捷方式,在Deepin Linux系统下给AppImage格式软件创建快捷方式的方法...

这两天使用deepin的过程中&#xff0c;无意中发现了一个叫krita的程序&#xff0c;是一个图像处理软件&#xff0c;类似Photoshop&#xff0c;于是就下载krita-4.2.8-x86_64的这个版本。但是麻烦的就是他是一个AppImage格式&#xff0c;每次我打开的时候需要打开相应文件夹中的…

图数据库在CMDB领域的应用

【导语】在上期的图数据库介绍中&#xff0c;我们对什么是图数据库&#xff0c;以及图数据库所擅长的领域做了一个初步的介绍&#xff0c;也收到了众多的反馈和咨询&#xff0c;特别要求我们对图数据库在一些具体行业的应用能做一些深入介绍。为此&#xff0c;从本期文档开始&a…

北理在线作业答案c语言,北理工19春《面向对象程序设计》在线作业【标准答案】...

北理工《面向对象程序设计》在线作业-0003试卷总分:100 得分:0一、 单选题 (共 38 道试题,共 76 分)1.对虚函数的调用()A.一定使用动态联编B.必须使用动态联编C.一定使用静态联编D.不一定使用动态联编2.下列关于派生类的描述中&#xff0c;错误的是()。A.派生类继承了基类的…

从分布式到微服务,深挖Service Mesh

原文&#xff1a;Pattern: Service Mesh &#xff08;作者&#xff0f;Phil Calado&#xff0c;翻译&#xff0f;雁惊寒&#xff0c;责编&#xff0f;魏伟 &#xff09; 摘要&#xff1a;在前一段时间&#xff0c;我们CSDN推出了《深度剖析Service Mesh服务网格新生代Istio》一…

c语言程序设计安徽区笔试部分,2021年安徽省二级C语言程序设计笔试样题-20210419093521.doc-原创力文档...

第1套 C语言程序设计笔试样题一 单项选取题(每题1分&#xff0c;共40分)1.某微型计算机型号规格标有PentiuШ600字样&#xff0c;其中PentiuШ是指 __C____A. 厂家名称 B. 机器名称 C. CPU型号 D. 显示屏名称2.当前微型机上普通使用光驱及光盘&#xff0c;它采用是__C____A. 超…