网站运营
位置:首页>> 网站运营>> linux下的C\\C++多进程多线程编程实例详解

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

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

标签:linux,多进程,多线程

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

0
投稿

猜你喜欢

手机版 网站运营 asp之家 www.aspxhome.com