四核c++线程

c++ thread for quadcore

本文关键字:线程 c++ 四核      更新时间:2023-10-16

你能告诉我如何设置一个线程来运行我的cpu的所有核心吗?我用:CreateThread(0,0, Thread, (LPVOID) 1,0,0);但它只运行在我的cpu的25%的速度,因为它只需要一个核心来做计算。我如何设置它使用所有的4全速?

一个线程在任何时候都将运行在单个内核上,尽管它可能由操作系统在内核之间切换。要让你的应用程序利用多个核心,那么你就需要多个线程。

您可以使用CreateThread来启动这些线程,或者使用boost::thread之类的包装器,或者使用新的c++ 11 std::thread。如果你有四个线程(包括第一个线程),那么你的应用程序可以同时在4个内核上运行。

然而,在应用程序中添加线程并不是一件容易的事情。多线程是一个复杂的主题,很难正确处理。与单线程应用程序相比,在多线程应用程序中可能遇到更多的困难和bug的来源。因此,有许多关于多线程编程的文章和书籍(包括我的)。

慢慢来,广泛阅读多线程编程,然后看看这是否是您的应用程序的最佳方法,以及如何最好地利用这些内核。

要使用4个核心的所有功能,您必须同时对这4个核心进行一些工作。

当你创建一个线程时,你为一个核心提供一些工作。一个线程的执行是按顺序执行的,一条指令一条指令地执行,一个指令只能由一个内核执行。

要使用4个内核,必须创建4个线程

单个线程不能在4核上并行运行,这怎么可能呢?相反,创建更多的线程(可能是4个)来利用所有的内核。然后,这些线程将在各自的内核上并行运行(在完美的情况下)。