使用32位Visual C ++,我有一个如下所示的函数:
void CastTestSpell(byte *packet, int length)
{
ServerSend(packet, length);
}
我想在一个新线程中发送函数调用ServerSend(packet, length);
,以摆脱它所在的当前线程,以便它不会阻止它。
我该怎么做?
答案 0 :(得分:2)
假设您以某种方式管理缓冲区对象,您可以执行
std::thread(&CastTestSpell, packet, length).detach();
(尽管我通常建议不要使用detach()
:您可能希望在战略点抓住std::thread
对象和join()
。
上面的代码使用的是当前的标准C ++(C ++ 2011)。如果它不能编译你的C ++系统是基于一个过时的标准:多线程支持,包括自上一个标准以来std::thread
。
答案 1 :(得分:0)
如果您想以原生Windows方式执行,请查看Windows API CreateThread()。
但是,如果经常调用CastTestSpell(),则每次启动一个新线程并不是一个好主意,因为线程设置性能较低。在这种情况下,您需要使用线程池(请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/ms686760%28v=vs.85%29.aspx)