使用Win 32 API创建并行线程

时间:2013-05-18 15:59:42

标签: c++ winapi parallel-processing

问题在于: 我有两个稀疏矩阵被描述为三元组的向量。 任务是使用Win 32 API并行处理为它们编写乘法函数。所以我需要知道如何:

1)在Win 32 API中创建一个线程

2)传递输入参数

3)获得返回值。

提前致谢!

编辑:“处理”已更改为“线程”

1 个答案:

答案 0 :(得分:1)

嗯,您的问题的答案是CreateProcessGetExitCodeProcess

但问题的解决方案根本不是另一个过程,而是更多线程。可能OpenMP是一种比创建自己的线程更合适的机制。

如果必须直接对线程使用Win32 API,则过程类似于:

  • 通过分配一些内存,存储指向真实数据的指针,索引该线程将要处理的内容等来构建工作项描述符。使用结构来保持这种组织。
  • 调用CreateThread并传递工作项描述符的地址。
  • 在您的线程过程中,将指针强制转换为结构指针,访问工作项描述符,然后处理数据。
  • 在主线程中,调用WaitForMultipleObjects加入工作线程。

为了获得更高的效率,您可以使用Windows线程池并调用QueueUserWorkItem。但是,虽然您不必自己创建线程,但您需要事件句柄将任务连接回主线程。它与我怀疑的代码量相同。