Closed. This question needs to be more focused。它当前不接受答案。












想要改善这个问题吗?更新问题,使它仅关注editing this post的一个问题。

7年前关闭。



Improve this question




我有两个功能。我如何同时运行两个功能?我知道应该使用线程。
我需要一个多线程示例。我正在使用Visual Studio 2010

最佳答案

您可以使用_beginthread

void CalculatePrimes(void*)
{
  // Do something
}

void TransmitFile(void*)
{
  // Do domething
}

int main()
{
  uintptr_ x = _beginthread(CalculatePrices,0,NULL);
  uintptr_ y = _beginthread(TransmitFile,0,NULL);

  return 0;
}

如果您可以使用C++ 11,则可以使用std::thread:
void CalculatePrimes()
{
  // Do something
}

void TransmitFile()
{
  // Do domething
}

int main()
{
  std::thread x(CalculatePrices);
  std::thread y(TransmitFile);

  // Both function are now running an different thread
  // We need to wait for them to finish

  x.join();
  y.join();

  return 0;
}

而且,如果您想深入了解金属,可以使用CreateThread api:
DWORD WINAPI CalculatePrimes(void *)
{
  // Do something
  return 0;
}

DWORD WINAPI TransmitFile(void *)
{
  // Do something
  return 0;
}

int main()
{
  HANDLE x=::CreateThread(NULL,0,CalculatePrimes,NULL,0,NULL);
  HANDLE y=::CreateThread(NULL,0,CalculatePrimes,NULL,0,NULL);

  // Wait for them to finish
  ::WaitForSingleObject(x,INFINITE);
  ::WaitForSingleObject(y,INFINITE);

  return 0;
}

10-04 14:44