多进程及多线程之间同步与通信

来源:互联网 发布:重庆数据谷招聘信息 编辑:程序博客网 时间:2024/05/03 10:23

同步与互斥:简单的控制

通信:交互的信息更多

Windows和Linux下用于同步与通信的机制大体一致,下面简单做一个归纳。

1.多线程的同步

方式                         Windows                                 Linux                                  备注

原子操作                     有                                            有                                      速度快

互斥锁                     临界区和Mutex                       pthread_mutex_t              此外还有自旋锁,读写锁等扩展,用于互斥,保证一个时刻只有一个线程执行

条件变量                Event                                        pthread_cond_t                用于同步。

信号量                   Semaphore                             sem_t                                 用于控制资源的访问


2.多进程的同步

方式                      Windows                                 Linux    

互斥锁                  Mutex                                    pthread_mutex_t

条件变量              Event                                    pthread_cond_t

信号量                 Semaphore                         sem_t

多进程的同步方式与多线程的同步方式基本一致,除了不能使用原子操作外;另外对于同步对象的创建方式上稍有差异。


3.多进程的通信

方式                    Windows                                  Linux

信号                      无                                        异步的通信机制

共享内存             有                                                有

匿名管道             有                                                有

命名管道/FIFO    有                                               有

消息队列             有                                               有

套接字                 有                                               有

此外还有一些特殊的机制,如内存映射文件,邮箱等机制。




原创粉丝点击