1、多进程编程
- #include<stdlib.h>
- #include<sys/types.h>
- #include<unistd.h>
- intmain()
- {
- pid_tchild_pid;
- /*创建一个子进程*/
- child_pid=fork();
- if(child_pid==0)
- {
- printf("childpid\n");
- exit(0);
- }
- else
- {
- printf("fatherpid\n");
- sleep(60);
- }
- return0;
- }
2、多线程编程
- #include<stdio.h>
- #include<pthread.h>
- structchar_print_params
- {
- charcharacter;
- intcount;
- };
- void*char_print(void*parameters)
- {
- structchar_print_params*p=(structchar_print_params*)parameters;
- inti;
- for(i=0;i<p->count;i++)
- {
- fputc(p->character,stderr);
- }
- returnNULL;
- }
- intmain()
- {
- pthread_tthread1_id;
- pthread_tthread2_id;
- structchar_print_paramsthread1_args;
- structchar_print_paramsthread2_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);
- return0;
- }
3、线程同步与互斥
1)、互斥
- pthread_mutex_tmutex;
- pthread_mutex_init(&mutex,NULL);
- /*也可以用下面的方式初始化*/
- pthread_mutex_tmutex=PTHREAD_MUTEX_INITIALIZER;
- pthread_mutex_lock(&mutex);
- /*互斥*/
- thread_flag=value;
- pthread_mutex_unlock(&mutex);
2)、条件变量
- intthread_flag=0;
- pthread_mutex_tmutex;
- pthread_cond_tthread_flag_cv;\
- voidinit_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();
- }
- returnNULL;
- }
- voidset_thread_flag(intflag_value)
- {
- pthread_mutex_lock(&mutex);
- thread_flag=flag_value;
- pthread_cond_signal(&thread_flag_cv);
- pthread_mutex_unlock(&mutex);
- }