在多个内核上运行

时间:2018-07-02 12:25:05

标签: c++ visual-studio multicore

最初,我有一个程序,将我分为几个部分,以便每个部分都由特定的内核执行。因此,在我的C ++项目中,我有几个“主文件”。我想知道在Visual Studio 2017中是否可以说“这样的核心执行such.cpp”。

使用一个简单的计数器和显示示例:计数器打开核心1并将其数据发送到核心2上的显示。这可能在Visual Studio 2017上运行吗?

2 个答案:

答案 0 :(得分:0)

不,这是不可能的,实际上这是毫无意义的。

按照您的简单想法,在core1向它发送一些数据之前,core2无关,此时core1将等待core2。因此,两个核心中的一个最多在任何时间都处于活动状态。为此使用一个内核会更加有效。

要在C ++中使用多个内核,您需要<thread>。使用<thread>并非自动。但是,一旦有了线程,就会自动使用多个内核。

答案 1 :(得分:0)

Windows中有一个调用可以将您的进程限制为特定的内核:

https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-setprocessaffinitymask

在这种情况下,您必须启动多个过程,设置它们的亲和力,并在每个过程中执行不同的任务。

还有一个线程:

https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-setthreadaffinitymask

在一个简单的情况下,您将为每个任务启动新线程,设置它们的亲和力,在线程中运行任务,然后等待线程与主线程连接。