【发布时间】:2016-02-21 06:42:06
【问题描述】:
假设我有这个 big_task() 函数,我可以在线程之间拆分以加快速度。
解决多线程问题的方法是在函数的每个任务上调用_beginthread(),然后等待所有线程完成,对吧?
我如何知道这是否会有效并真正有益于最大限度地减少 big_task() 运行时间?
我还听说多线程效率取决于客户端的平台和硬件。这意味着我也需要在程序开始时查询它..?
还有一个问题,在 Windows 中编码时,使用CreateThread() 比使用_beginthread() 更好吗?我编写跨平台应用程序,但如果 CreateThread() 比我可以专门编写代码以在 Windows 中使用它更有效。
【问题讨论】:
-
你能解释一下任务的类型吗? (网络、数据库访问、磁盘 io、cpu 时间?)
-
如果您使用的是 C++11,我相信您可以改用
std::thread。 -
首先,如果你在多处理器/多核系统上,当然多线程会更快。
-
@AlexandreLavoie:仅当这些任务可以并行执行时;-)
-
@Pilpel 如果您满意,您应该接受其中一个答案。它不需要是我的答案;-)
标签: c++ multithreading