千家信息网

linux下C++多进程与多线程实例分析

发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,这篇文章主要介绍了linux下C++多进程与多线程实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇linux下C++多进程与多线程实例分析文章都会有所收获,下面我们
千家信息网最后更新 2025年01月17日linux下C++多进程与多线程实例分析

这篇文章主要介绍了linux下C++多进程与多线程实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇linux下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++多进程与多线程实例分析"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

0