嘿我有一个我编写的多线程程序在线程之间共享内存,是否有某种方法可以通过使用共享内存而不是malloc的常规内存来提高效率?
此外,如果我有办法改进这个程序,它会在github here上列出。
另外,我知道存在大量内存泄漏,这些会影响程序的速度吗?
答案 0 :(得分:4)
共享内存通常是指在不同进程之间共享的内存,需要特殊的OS调用来设置和使用:shm_open
用于POSIX共享内存,shmget
用于SysV共享内存或带有mmap
标记的MAP_SHARED
。
同一过程中的线程可以简单地访问过程'记忆(你从malloc
获得的记忆)。
由于共享内存的开销对于普通的多线程程序来说是不必要的,因此在单进程程序中使用它不会带来任何好处。