1

使用 Visual C++ 32 位,我有一个如下所示的函数:

void CastTestSpell(byte *packet, int length)
{
    ServerSend(packet, length);
}

我想ServerSend(packet, length);在一个新线程中发送函数调用以脱离它所在的当前线程,这样它就不会阻塞它。

我该怎么做?

4

2 回答 2

2

假设您以某种方式管理缓冲区对象,您可以这样做

std::thread(&CastTestSpell, packet, length).detach();

(尽管我通常建议不要使用: 您可能希望在战略点detach()上获取std::thread对象和它)。join()

上面的代码使用当前的标准 C++ (C++ 2011)。如果它不能编译你的 C++ 系统是基于一个过时的标准:多线程支持,包括std::thread从以前的标准开始添加。

于 2012-12-21T19:42:26.443 回答
0

如果您想以原生 Windows 方式执行此操作,请查看 Windows API CreateThread()。

但是,如果您经常调用 CastTestSpell(),则每次都启动一个新线程并不是一个好主意,因为线程设置的性能很低。在这种情况下,您需要使用线程池(请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/ms686760%28v=vs.85%29.aspx

于 2012-12-21T23:15:52.780 回答