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);
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
linux c多进程多线程,linux下的C\C++多进程多线程编程实例详解相关推荐
- Linux如何重启oracle监听,Linux下重启oracle服务及监听器和实例详解
一.在Linux下重启Oracle数据库及监听器: 方法1: 用root以ssh登录到linux,打开终端输入以下命令: cd $ORACLE_HOME #进入到oracle的安装目录 dbstart ...
- linux 脚本编写基本命令,Linux Shell命令行及脚本编程实例详解
<Linux典藏大系:Linux Shell命令行及脚本编程实例详解>共15章,分为两篇.主要内容包括:Linux 及Linux Shell简介.初识Linux Shell.常用Shell ...
- Linux如何全盘搜索MySQL文件_Linux上的文件搜索命令实例详解
locate 基础了解 locate命令搜索的后台数据库路径:/var/lib/mlocate/mlocate.db ls -hl /var/lib/mlocate total 1.2M -rw-r- ...
- linux shell命令行及脚本编程实例详解_超全整理!这些Shell编程必备知识你都掌握了吗?...
正文最近很多粉丝咨询我,被问到了一些Shell编程的问题,看看大家能否答出来: 1.shell脚本千千万,不知道从哪入手 2.没经验缺方法,面试通不过.做事没头绪 3.野路子.没人教自动化,做了几年基 ...
- linux shell命令行及脚本编程实例详解_Linux高手必看的10本经典书籍
Linux高手必看的10本经典书籍 Linux 是一个开放.灵活.跨平台的操作系统,上至庞大的数据中心,下至可放于掌心中的嵌入式设备,Linux 的身影无处不在. 如果你想成为一名精通 Linux 程 ...
- Linux网络编程实例详解
本文介绍了在Linux环境下的socket编程常用函数用法及socket编程的一般规则和客户/服务器模型的编程应注意的事项和常遇问题的解决方法,并举了具体代 码实例.要理解本文所谈的技术问题需要读者具 ...
- 创建三个并发进程linux,Linux下几种并发服务器的实现模式(详解)
1>单线程或者单进程 相当于短链接,当accept之后,就开始数据的接收和数据的发送,不接受新的连接,即一个server,一个client 不存在并发. 2>循环服务器和并发服务器 1.循 ...
- 1 linux下tcp并发服务器的几种设计的模式套路,Linux下几种并发服务器的实现模式(详解)...
1>单线程或者单进程 相当于短链接,当accept之后,就开始数据的接收和数据的发送,不接受新的连接,即一个server,一个client 不存在并发. 2>循环服务器和并发服务器 1.循 ...
- dns日志级别 linux,linux下DNS服务器视图view及日志系统详解
linux下DNS服务器视图view及日志系统详解DNS服务器ACL:在named.conf文件中定义ACL功能如同bash当中定义变量,便于后续引用 ACL格式: acl ACL名称 { IP地址1 ...
最新文章
- linux虚拟机安装oracle全过程(一)
- 开发时间及内容(二)
- mybatisdb.sql
- [转帖]什么是α射线、β射线、γ射线
- Windows 8实用窍门系列:9.Windows 8中使用FlipView
- 使用C#发送Http 请求实现模拟登陆(以博客园为例)
- (实用篇)浅谈PHP拦截器之__set()与__get()的理解与使用方法
- idea搭建java openCV环境
- 快速搭建企业级邮件系统iRedMail+Mysql+Postfix+php
- SQL Pass北京举办第六次线下活动,欢迎报名
- 【深扒】深入理解 JavaScript 中的异步编程
- 冰雪大作战服务器响应超时,《冰雪大作战》一场回归童心的战争游戏
- [渝粤教育] 西北农林科技大学 食品安全概论 参考 资料
- 计算机服务器机房设计方案,机房设计方案.pdf
- Java企业商品进销存管理系统
- unity中实现多人联机局域网-基于pun v2 + photon server v5
- 基于α-β剪枝算法的智能五子棋
- 进入邻居家的无线路由器
- 网络加速器的加速原理
- 爱情顾问岗,雷哥成功拿到了offer
热门文章
- 3千字带你搞懂XXL-JOB任务调度平台
- 阿里云专属数据库,重新定义云数据库新形态
- 启迪公交:DRDS助力城市公交系统智能化
- 日均万亿条数据如何处理?爱奇艺实时计算平台这样做
- 阿里云Kubernetes服务上从零搭建GitLab+Jenkins+GitOps应用发布模型的实践全纪录
- 离线计算中的幂等和DataWorks中的相关事项
- 金蝶云拿下客户满意度第一,中国SaaS企业觅得“后发先至”良机
- 震惊!阿里的程序员竟被一个简单的 SQL 查询难住了!
- 突发!Python再次第一,Java和C下降,凭什么? ​
- python复制列表元素_Python学习教程:Python列表赋值,复制,深拷贝及5种浅拷贝详解...