linux下的C\C++多进程多线程编程简易例子
来源:互联网 发布:燕十八php视频教程 编辑:程序博客网 时间:2024/04/30 14:56
多进程编程
#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;}
多线程编程
#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;}
线程同步与互斥
互斥
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);
条件变量
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);}
0 2
- linux下的C\C++多进程多线程编程简易例子
- linux下的C\C++多进程多线程编程
- linux下的C语言多线程编程小例子
- Linux下的C多线程编程
- Linux下的C多线程编程
- Linux下的C多线程编程
- Linux下的C语言多线程编程
- Linux下的C语言多线程编程
- Linux下C语言的多线程编程
- linux下c语言的多线程编程
- Linux下C多线程编程
- Linux下C多线程编程
- Linux下C语言编程-进程的创建
- Linux下C语言编程-进程的创建
- Linux下C语言编程--进程的创建
- Linux下C语言编程--进程的创建
- Linux下C语言编程--进程的创建
- Linux下的C编程实战之三进程控制
- [leetcode题后感]container with most water
- IOS开发语言Swift入门连载---基本运算符
- everything start from keystone(4)
- 博弈(部分)
- myeclipse 使用maven出现的问题
- linux下的C\C++多进程多线程编程简易例子
- java设计模式
- 个人经历
- 【索引】Dynamic Programming
- switch运算
- 【NOIP提高组系列】NOIP2000
- 自我管理 - 希望2015年自己能够做到的几点目标
- leetcode-119 Pascal's Triangle II
- 【索引】Dynamic Programming::Examples