相关疑难解决方法(0)

为什么malloc不是异步信号安全?

为什么malloc不能用于信号处理程序?什么可能"发生错误"?

unix

19
推荐指数
1
解决办法
4205
查看次数

为什么POSIX线程比OpenMP慢

我在带有Xeon处理器的Mac Pro上运行完全并行的矩阵乘法程序.我创建了8个线程(与核心一样多的线程),并且没有共享写入问题(没有写入相同的位置).出于某种原因,我使用pthread_create和使用的pthread_join速度大约是使用速度的两倍#pragma openmp.

在任何事情上没有其他差异......相同的编译选项,两种情况下相同的线程数,相同的代码(pthread显然除了pragma/部分)等.

循环非常大 - 我没有并行化小循环.

(我不能真正发布代码,因为它是学校的工作.)

为什么会发生这种情况?OpenMP不使用POSIX线程吗?怎么会更快?

c pthreads openmp

9
推荐指数
1
解决办法
1549
查看次数

使用pthreads以挂起模式创建线程

在Win32中,您可以通过在CREATE_SUSPENDED中使用dwCreationFlags参数来创建挂起模式的线程.我正在寻找与pthreads类似的功能.请注意,我不希望在运行它之后暂停该线程,然后使用条件变量暂停它,但实际上是在挂起模式下创建它,然后稍后启动它.

使用这种方法的优点是我可以在运行之前为该线程分配一些属性.例如,在启动之前将其绑定到某个核心,这比首次启动更有效,然后将其分配给核心,因为它可能会从一个核心移动到另一个核心.

如果不可能,我们至少可以在调用pthread_create时将线程绑定到核心吗?

c linux winapi pthreads

1
推荐指数
1
解决办法
5621
查看次数

标签 统计

c ×2

pthreads ×2

linux ×1

openmp ×1

unix ×1

winapi ×1