多线程在C++中执行单个任务

Pil*_*pel 4 c++ multithreading

假设我有这个big_task()功能,我可以在线程之间分配加速.

解决多线程问题的方法是调用_beginthread()函数的每个任务,然后等待所有线程完成,对吧?

我如何知道这是否有效并且实际上有利于最小化big_task()运行时间?

我还听说多线程效率取决于客户端的平台和硬件.这意味着我需要在程序开头查询...?

在Windows中进行编码时,还有一个问题是使用它CreateThread()而不是_beginthread()?我编写跨平台应用程序但是如果CreateThread()比我专用我的代码在Windows中使用它更有效.

mar*_*inj 5

解决多线程问题的方法是在函数的每个任务上调用_beginthread(),然后等待所有线程完成,对吧?

这样你就可以并行化你的大功能,所以是的,这是真的.

我怎么知道这样做是否有效并且实际上有利于最小化big_task()运行时间?

你必须剖析它.如果你的大功能是在CPU没有I/O操作上执行代码,那么考虑创建与CPU中的内核数相同数量的线程.

我还听说多线程效率取决于客户端的平台和硬件.这意味着我需要在程序开头查询...?

具有更多内核的CPU肯定会比具有更少内核的CPU更快,您可以查看PPL(仅限win),TBB,OpenMP库,以确保根据CPU内核数量有效运行任务.

还有一个问题,在Windows中进行编码时,使用CreateThread()而不是_beginthread()会更好吗?我编写跨平台应用程序但是如果CreateThread()比我专门化我的代码在Windows中使用它更有效.

如果你想跨平台,那么使用std :: thread或boost.