四核c++线程
c++ thread for quadcore
你能告诉我如何设置一个线程来运行我的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个)来利用所有的内核。然后,这些线程将在各自的内核上并行运行(在完美的情况下)。
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 在C++中使用cURL和多线程
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在cuda线程之间共享大量常量数据
- 如何将元素添加到数组的线程安全函数?
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 异常属于C++中的线程还是进程
- C++中的线程安全删除
- C++使用params创建线程函数会导致转换错误
- 类与私有变量的其他类之间的线程安全性
- CoInitialize()在单独的线程上崩溃而不返回
- c++中的线程池
- 线程之间的布尔停止信号
- 为什么std::async使用同一个线程运行函数
- 用于矢量处理的多个线程
- C++为线程工作动态地分割例程
- 为什么我不能在 while 循环中创建线程?