我需要在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
也没有帮助。
一个进程中只能有一个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);
}
创建一个main,然后启动另一个线程,为其设置处理器相关性。
伪代码:
int main1(){...}
int main2(){...}
int main()
{
main2_thread = StartThreed( main2 );
SetProcessorAffinity( this_thread, 0 );
SetProcessorAffinity( main2_thread, 1 );
main1();
}
只生成一个main,然后从那里启动多个线程。或者一个main,在那里你可以分叉几个进程。