【发布时间】:2013-08-27 19:10:28
【问题描述】:
由于同一进程中的线程共享相同的地址空间,我们可以通过直接内存访问和互斥锁在这些线程之间传输数据,那么在这种情况下我有以下问题:
- 全局变量和互斥锁是否足以支持线程间通信?
- 如果问题 1 为假,在什么情况下我们应该选择其他 IPC 而不是直接内存访问?或者说,在什么情况下其他 IPC 手段比使用全局变量和互斥体更合适?
谢谢。
更新
感谢@ssyam 指出关于“全局变量”的错误陈述。
除了更正原始段落之外,我选择再添加一个部分,因为
该段落给出了许多cmets。
【问题讨论】:
-
附带说明(这里只是吹毛求疵...)IPC 表示“进程间通信”,因此它不能应用于线程(in-进程通信)。但无论如何,我们都明白你的意思。 :)
-
@syam 关于你的 nit。进程间通信这个术语出现在线程之前,但我从来没有听说过有人在应用于进程内通信时对这个术语犹豫不决。至少在 linux 中,进程和线程之间并没有太大的区别。
-
@Duck 实际上你是对的。查看维基百科(我知道......)的定义,似乎“IPC”一词也用于线程间通信(即使它扩展到“进程间......”)。我想我的强迫症又发作了,我的错。
标签: c++ linux multithreading networking ipc