在新线程中调用代码

时间:2012-12-21 19:37:35

标签: c++

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

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

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

我该怎么做?

2 个答案:

答案 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