全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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小时内与您取得联系。