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

作者:lqh 时间:2021-01-08 17:26:07 

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

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

来源:http://blog.csdn.net/nyist327/article/details/44958585

标签:linux,多进程,多线程
0
投稿

猜你喜欢

  • 详解Apache SkyWalking 告警配置指南

    2023-07-10 07:08:34
  • 网站所有页面都消失 原因分析及解决办法

    2008-12-20 13:33:00
  • VMware下配置Linux系统局域网和外网访问图文教程

    2023-09-03 10:50:08
  • 基于Sendmail和Perl的邮件附件过滤系统

    2008-01-09 10:33:00
  • 3个月时间,流量1万 收录3万 一个中专生的建站经历

    2007-08-05 18:12:00
  • 如何减少和避免Google Adsense无效点击

    2007-09-21 14:24:00
  • PHPWind v7.3.2 ie6下颜色选择框定位不准

    2009-05-31 17:02:00
  • Linux修改用户所属组的方法

    2023-11-02 23:37:23
  • 逐步排查 层层递进 解决IIS服务器报错

    2010-05-04 17:59:00
  • 淘宝网:淘宝定位成C2B 淘宝商城成长最快

    2009-10-27 15:43:00
  • 如何利用Docker容器实现代理转发与数据备份详解

    2023-08-17 10:29:04
  • linux下安装配置svn独立服务器的步骤分享

    2023-10-19 14:20:31
  • 网页游戏联合 掀起站长盈利新热潮

    2008-08-07 12:13:00
  • 通过googleAdSense赚取美元这4年

    2008-11-04 13:18:00
  • vmware12中安装 RedHat RHEL7.2系统的详细步骤(图文)

    2023-10-14 02:03:08
  • 五个最佳FTP客户端软件工具[月光翻译]

    2008-12-04 13:22:00
  • Hadoop streaming详细介绍

    2023-10-12 04:43:50
  • 谷歌趋势和百度指数对比

    2008-06-21 16:36:00
  • 我也谈高校论坛建设经验,同样适合各大类BBS

    2007-08-05 12:46:00
  • 如何查询网站的反向链接数量

    2007-10-19 13:34:00
  • asp之家 网站运营 m.aspxhome.com