LinuxでのC \ C ++マルチプロセスマルチスレッドプログラミングの例

1 Star2 Stars3 Stars4 Stars5 Stars (1 投票, 平均点: 4.00)
Loading...

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

読んでくれてありがとう、私は皆を助けることを望む、あなたのサポートに感謝!


1 Star2 Stars3 Stars4 Stars5 Stars (1 投票, 平均点: 4.00)
Loading...
      この投稿は審査処理中  | 元のサイトへ