使用 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)