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++多进程多线程编程实例详解相关推荐

  1. Linux如何重启oracle监听,Linux下重启oracle服务及监听器和实例详解

    一.在Linux下重启Oracle数据库及监听器: 方法1: 用root以ssh登录到linux,打开终端输入以下命令: cd $ORACLE_HOME #进入到oracle的安装目录 dbstart ...

  2. linux 脚本编写基本命令,Linux Shell命令行及脚本编程实例详解

    <Linux典藏大系:Linux Shell命令行及脚本编程实例详解>共15章,分为两篇.主要内容包括:Linux 及Linux Shell简介.初识Linux Shell.常用Shell ...

  3. Linux如何全盘搜索MySQL文件_Linux上的文件搜索命令实例详解

    locate 基础了解 locate命令搜索的后台数据库路径:/var/lib/mlocate/mlocate.db ls -hl /var/lib/mlocate total 1.2M -rw-r- ...

  4. linux shell命令行及脚本编程实例详解_超全整理!这些Shell编程必备知识你都掌握了吗?...

    正文最近很多粉丝咨询我,被问到了一些Shell编程的问题,看看大家能否答出来: 1.shell脚本千千万,不知道从哪入手 2.没经验缺方法,面试通不过.做事没头绪 3.野路子.没人教自动化,做了几年基 ...

  5. linux shell命令行及脚本编程实例详解_Linux高手必看的10本经典书籍

    Linux高手必看的10本经典书籍 Linux 是一个开放.灵活.跨平台的操作系统,上至庞大的数据中心,下至可放于掌心中的嵌入式设备,Linux 的身影无处不在. 如果你想成为一名精通 Linux 程 ...

  6. Linux网络编程实例详解

    本文介绍了在Linux环境下的socket编程常用函数用法及socket编程的一般规则和客户/服务器模型的编程应注意的事项和常遇问题的解决方法,并举了具体代 码实例.要理解本文所谈的技术问题需要读者具 ...

  7. 创建三个并发进程linux,Linux下几种并发服务器的实现模式(详解)

    1>单线程或者单进程 相当于短链接,当accept之后,就开始数据的接收和数据的发送,不接受新的连接,即一个server,一个client 不存在并发. 2>循环服务器和并发服务器 1.循 ...

  8. 1 linux下tcp并发服务器的几种设计的模式套路,Linux下几种并发服务器的实现模式(详解)...

    1>单线程或者单进程 相当于短链接,当accept之后,就开始数据的接收和数据的发送,不接受新的连接,即一个server,一个client 不存在并发. 2>循环服务器和并发服务器 1.循 ...

  9. dns日志级别 linux,linux下DNS服务器视图view及日志系统详解

    linux下DNS服务器视图view及日志系统详解DNS服务器ACL:在named.conf文件中定义ACL功能如同bash当中定义变量,便于后续引用 ACL格式: acl ACL名称 { IP地址1 ...

最新文章

  1. linux虚拟机安装oracle全过程(一)
  2. 开发时间及内容(二)
  3. mybatisdb.sql
  4. [转帖]什么是α射线、β射线、γ射线
  5. Windows 8实用窍门系列:9.Windows 8中使用FlipView
  6. 使用C#发送Http 请求实现模拟登陆(以博客园为例)
  7. (实用篇)浅谈PHP拦截器之__set()与__get()的理解与使用方法
  8. idea搭建java openCV环境
  9. 快速搭建企业级邮件系统iRedMail+Mysql+Postfix+php
  10. SQL Pass北京举办第六次线下活动,欢迎报名
  11. 【深扒】深入理解 JavaScript 中的异步编程
  12. 冰雪大作战服务器响应超时,《冰雪大作战》一场回归童心的战争游戏
  13. [渝粤教育] 西北农林科技大学 食品安全概论 参考 资料
  14. 计算机服务器机房设计方案,机房设计方案.pdf
  15. Java企业商品进销存管理系统
  16. unity中实现多人联机局域网-基于pun v2 + photon server v5
  17. 基于α-β剪枝算法的智能五子棋
  18. 进入邻居家的无线路由器
  19. 网络加速器的加速原理
  20. 爱情顾问岗,雷哥成功拿到了offer

热门文章

  1. 3千字带你搞懂XXL-JOB任务调度平台
  2. 阿里云专属数据库,重新定义云数据库新形态
  3. 启迪公交:DRDS助力城市公交系统智能化
  4. 日均万亿条数据如何处理?爱奇艺实时计算平台这样做
  5. 阿里云Kubernetes服务上从零搭建GitLab+Jenkins+GitOps应用发布模型的实践全纪录
  6. 离线计算中的幂等和DataWorks中的相关事项
  7. 金蝶云拿下客户满意度第一,中国SaaS企业觅得“后发先至”良机
  8. 震惊!阿里的程序员竟被一个简单的 SQL 查询难住了!
  9. 突发!Python再次第一,Java和C下降,凭什么? ​
  10. python复制列表元素_Python学习教程:Python列表赋值,复制,深拷贝及5种浅拷贝详解...