0

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

pthread_t thr[MAXCONNECTIONS];

在 Windows 上,我找不到任何替代品。无论如何要创建一个数组或替代它的东西吗?

4

3 回答 3

2
HANDLE threads[ThreadCount];

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

I've left out some stuff but you get the jist. You have an array of HANDLE's instead of physical threads. You can then pass a HANDLE to various functions to do things on the thread.

WaitForSingleObject(threads[2], INFINITE );
于 2012-11-04T13:02:55.377 回答
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);
于 2012-11-04T13:08:18.357 回答
0

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

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

于 2012-11-04T15:03:55.230 回答