进程和线程之间的通信方法
一:进程之间的通信方法
1.消息队列2.共享内存
3.管道:分为匿名管道用在父子进程之间通信,命名管道用于父子进程或不相关进程之间通信;
4.父子进程也可以通过文件描述符通信,共同打开同一个文件;二:线程之间的通信方法
1.全局数据,全局变量,全局数据结构2.创建线程的时候通过参数arg主线程传递数据给新线程 pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);
新线程退出的时候通过void pthread_exit(void *retval);和int pthread_join(pthread_t thread, void **retval);向主线程传递信息;
见博客:多线程函数系列pthread_create(), pthread_join(), pthread_self(),pthread_exit(), pthread_detach()实例详解
3.文件句柄,多个线程共享文件
待续。。。这部分还要写。。。
进程和线程之间的同步方法
1:信号量
一般是0和1两个值,进去临界区减去1(P操作),离开临界区加上1(V操作);如果涉及到对多个资源进行控制,那么信号量的值设置为资源的数目;2:互斥量
互斥量其实是信号量的一种;每当一个线程或进程访问临界区的时候就要先获取互斥量,离开临界区的时候释放互斥量;如果获取互斥量失败,则阻塞;所以互斥量使多个线程或进程对临界区的执行串行化;