在Windows上创建线程数组

时间:2012-11-04 12:27:03

标签: c windows multithreading

我正在尝试创建一个线程数组。在Linux中,我这样做:

pthread_t thr[MAXCONNECTIONS];

在Windows上,我找不到任何替代品。反正有没有创建一个替换它的数组?

3 个答案:

答案 0 :(得分:2)

HANDLE threads[ThreadCount];

for (int i=0; i < ThreadCount; ++i)
{
   threads[i] = (HANDLE)_beginthreadex( NULL, 0, &ThreadFunc, NULL, 0, &threadID );
}

我遗漏了一些东西,但是你得到了这个小说。你有一个HANDLE的数组而不是物理线程。然后,您可以将HANDLE传递给各种函数以在线程上执行操作。

WaitForSingleObject(threads[2], INFINITE );

答案 1 :(得分:0)

假设您要创建10个帖子

包括这个:

#include <Windows.h>
#include <process.h>

线程函数看起来像这样:

DWORD WINAPI thread_1(LPVOID lpParam){ /* do something */; return 0; }

数组和线程创建:

HANDLE thr[10];
thr[0] = CreateThread(NULL, 0, thread_1, NULL, NULL, NULL);
... etc for 1..9
WaitForMultipleObjects(10, thr, TRUE, INFINITE);

答案 2 :(得分:0)

如果您可以使用c++,则更便携的解决方案是使用Boost threads数组(链接到Boost)。这将在Linux和Windows上使用相同的代码。

您还可以使用c++11 std::thread的数组,这也是可移植的。我不确定,但我知道std :: thread还没有完成Windows,所以你可能会更好地使用Boost。