Pil*_*pel 4 c++ multithreading
假设我有这个big_task()功能,我可以在线程之间分配加速.
解决多线程问题的方法是调用_beginthread()函数的每个任务,然后等待所有线程完成,对吧?
我如何知道这是否有效并且实际上有利于最小化big_task()运行时间?
我还听说多线程效率取决于客户端的平台和硬件.这意味着我需要在程序开头查询...?
在Windows中进行编码时,还有一个问题是使用它CreateThread()而不是_beginthread()?我编写跨平台应用程序但是如果CreateThread()比我专用我的代码在Windows中使用它更有效.
解决多线程问题的方法是在函数的每个任务上调用_beginthread(),然后等待所有线程完成,对吧?
这样你就可以并行化你的大功能,所以是的,这是真的.
我怎么知道这样做是否有效并且实际上有利于最小化big_task()运行时间?
你必须剖析它.如果你的大功能是在CPU没有I/O操作上执行代码,那么考虑创建与CPU中的内核数相同数量的线程.
我还听说多线程效率取决于客户端的平台和硬件.这意味着我需要在程序开头查询...?
具有更多内核的CPU肯定会比具有更少内核的CPU更快,您可以查看PPL(仅限win),TBB,OpenMP库,以确保根据CPU内核数量有效运行任务.
还有一个问题,在Windows中进行编码时,使用CreateThread()而不是_beginthread()会更好吗?我编写跨平台应用程序但是如果CreateThread()比我专门化我的代码在Windows中使用它更有效.
如果你想跨平台,那么使用std :: thread或boost.
| 归档时间: |
|
| 查看次数: |
264 次 |
| 最近记录: |