Visual C++ 32 ビットを使用すると、次のような関数があります。
void CastTestSpell(byte *packet, int length)
{
ServerSend(packet, length);
}
新しいスレッドで関数呼び出しを送信してServerSend(packet, length);
、現在のスレッドから離れて、ブロックされないようにしたいと考えています。
どうすればいいですか?
Visual C++ 32 ビットを使用すると、次のような関数があります。
void CastTestSpell(byte *packet, int length)
{
ServerSend(packet, length);
}
新しいスレッドで関数呼び出しを送信してServerSend(packet, length);
、現在のスレッドから離れて、ブロックされないようにしたいと考えています。
どうすればいいですか?
バッファオブジェクトを何らかの方法で管理すると仮定すると、次のことができます
std::thread(&CastTestSpell, packet, length).detach();
(私は一般的に の使用に反対することをお勧めしますが、おそらくオブジェクトとそれを戦略的なポイントでdetach()
手に入れたいと思うでしょう)。std::thread
join()
上記のコードは、現在の標準 C++ (C++ 2011) を使用しています。コンパイルされない場合、C++ システムは古い標準に基づいてstd::thread
います。以前の標準以降に追加されたマルチスレッド サポートを含みます。
ネイティブの Windows の方法で実行したい場合は、Windows API の CreateThread() を確認してください。
ただし、CastTestSpell() を頻繁に呼び出す場合は、スレッドのセットアップのパフォーマンスが低いため、毎回新しいスレッドを開始することはお勧めできません。この場合、スレッド プールを使用する必要があります ( http://msdn.microsoft.com/en-us/library/windows/desktop/ms686760%28v=vs.85%29.aspxを参照) 。