[英]Run on several cores
最初,我有一个程序,将我分为几个部分,以便每个部分都由特定的内核执行。 因此,在我的C ++项目中,我有几个“主文件”。 我想知道是否可以从Visual Studio 2017说“这样的核心执行such.cpp”。
使用一个简单的计数器和显示示例:计数器打开内核1并将其数据发送到内核2上的显示。这是否可以在Visual Studio 2017上运行?
不,这是不可能的,实际上这是没有意义的。
用您的简单想法,在core1向其发送一些数据之前,core2无关,此时core1将等待core2。 因此,两个核心中的一个最多在任何时间都处于活动状态。 为此使用一个内核会更加高效。
要在C ++中使用多个内核,您需要<thread>
。 使用<thread>
是自动的。 然而,一旦你有线程,采用多内核是自动的。
Windows中有一个调用可以将您的进程限制为特定的核心:
https://docs.microsoft.com/zh-cn/windows/desktop/api/winbase/nf-winbase-setprocessaffinitymask
在这种情况下,您必须启动多个过程,设置它们的亲和力,并在每个过程中执行不同的任务。
还有一个线程:
https://docs.microsoft.com/zh-cn/windows/desktop/api/winbase/nf-winbase-setthreadaffinitymask
在简单的情况下,您将为每个任务启动新线程,设置它们的亲和力,在线程中运行任务,然后等待线程与主线程联接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.