-2

我需要通过在 MS Windows 上使用 2 个硬件 CPU 来获得性能。我写了以下代码:

#include "windows.h"

int main1(int argc, CHAR* argv[])
{
    // ...
}

int main2(int argc, CHAR* argv[])
{
    // ...
}

编写两个主要函数 - 每个 CPU 一个。编译器告诉我:

D:/MinGW/x86_64-w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-crt0_c.o):crt0_c.c:(.text+0x3d): undefined reference to `WinMain'
collect2.exe: error: ld returned 1 exit status

我究竟做错了什么?我如何编写两个电源以使它们在两个不同的 CPU 上运行?_tmain1, _tmain2也无济于事。

4

3 回答 3

4

一个进程中只能有一个main功能。从该函数,您可以启动多个线程。这是一个非常简短的示例:

#include <iostream>
#include <Windows.h>
#include <process.h>

void thread_func(void* v)
{
   std::cout << "Hello: " << *(int*)v << std::endl;
}

int main()
{
   int i = 1;
   ::_beginthread(thread_func, 0, &i);

   int i2 = 2;
   _beginthread(thread_func, 0, &i2);

   Sleep(1000);
}
于 2012-07-23T14:00:49.770 回答
3

您创建一个主线程,并启动另一个您为其设置处理器关联的线程。

伪代码:

int main1(){...}
int main2(){...}

int main()
{
  main2_thread = StartThreed( main2 );
  SetProcessorAffinity( this_thread, 0 );
  SetProcessorAffinity( main2_thread, 1 );
  main1();
}
于 2012-07-23T14:02:16.847 回答
2

要么只做一个主线程,然后从那里启动多个线程。或者一个主要的,您可以在其中分叉多个进程。

于 2012-07-23T14:01:56.457 回答