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 );
}

私はいくつかのものを省略しましたが、あなたはジストを取得します。物理スレッドの代わりにHANDLEの配列があります。次に、HANDLEをさまざまな関数に渡して、スレッドで処理を実行できます。

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

を使用する可能性がある場合c++、より移植性の高いソリューションは、Boostスレッドの配列を使用することです( Boostへのリンク)。これは、LinuxとWindowsの両方で同じコードで機能します。

の配列を使用することもできますc++11 std::thread。これも移植可能です。よくわかりませんが、Windowsではstd :: threadがまだ完成していないことを理解しているので、Boostを使用したほうがよいでしょう。

于 2012-11-04T15:03:55.230 に答える