多处理器系统上的POSIX线程

时间:2012-01-27 18:59:54

标签: multithreading process pthreads

我编写了利用POSIX线程的软件,以便我可以在进程中使用共享内存。我的问题是,如果我有一台运行Ubuntu的机器有4个处理器,每个处理器有16个核心。使用16个线程运行4个进程或使用64个线程运行1个进程是否更有效?每个处理器都有一个专用的32GB内存。

我主要担心的是,在看到1个进程后会发生很多memcopy。

总结:
在4(16核)Proc机器上 1个进程64个线程?
4个进程每个16个线程?
如果该过程需要超过32 GB的RAM(专用于一个Proc的数量),答案会有所不同吗?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

取决于您的应用程序的功能。

单线程进程中的线程比多线程进程中的线程运行得更快,因为后者需要在malloc()fprintf()等库函数中的线程之间进行同步。此外,多线程进程中的更多线程可能会导致更多的锁争用相互减慢。如果线程不需要通信而不共享数据,则它们不需要在同一个进程中。

在你的情况下,你可以通过16个线程而不是1个进程和64个线程获得更好的并行性。