多线程程序中的共享内存是否有优势?

时间:2014-12-14 18:14:46

标签: c multithreading posix shared-memory

嘿我有一个我编写的多线程程序在线程之间共享内存,是否有某种方法可以通过使用共享内存而不是malloc的常规内存来提高效率?

此外,如果我有办法改进这个程序,它会在github here上列出。

另外,我知道存在大量内存泄漏,这些会影响程序的速度吗?

1 个答案:

答案 0 :(得分:4)

共享内存通常是指在不同进程之间共享的内存,需要特殊的OS调用来设置和使用:shm_open用于POSIX共享内存,shmget用于SysV共享内存或带有mmap标记的MAP_SHARED

同一过程中的线程可以简单地访问过程'记忆(你从malloc获得的记忆)。

由于共享内存的开销对于普通的多线程程序来说是不必要的,因此在单进程程序中使用它不会带来任何好处。