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下的C\C++多进程多线程编程
原文:http://blog.csdn.net/nyist327/article/details/44958585