我是一名C++程序员(中级),现在正在学习多线程。当我使用C++时,我发现很难判断何时需要使用多线程?我该如何知道何时需要在哪个部分使用多线程?
When to use multithreading in C++?
我是一名C++程序员(中级),现在正在学习多线程。当我使用C++时,我发现很难判断何时需要使用多线程?我该如何知道何时需要在哪个部分使用多线程?
When to use multithreading in C++?
当您有像巨大的数学计算这样的资源密集型任务,或者像读写文件这样的I/O密集型任务时,应该使用多线程。
目的是可以同时运行多个任务,从而提高应用程序的性能和响应能力。在实现多线程之前,还应了解同步技术。
这是一个略带主观性的话题... 但我倾向于在以下两种情况下使用多线程。
1 - 在性能关键的情况下,需要最大的计算能力(当然,算法支持并行化),对我来说,矩阵乘法就是这样的情况。
2 - 很少情况下,可能更容易让一个线程管理相当独立的东西。经典的例子是网络,也许有一个线程阻塞等待连接,并生成线程来管理每个进来的线程。这很有用,因为线程可以阻塞并及时响应。假设您有一个服务器,一个请求可能需要慢速的磁盘访问,另一个线程可以跳入并处理不同的请求,而第一个线程正在等待其数据。
正如其他人所说,只有在需要时才考虑使用它,它会很快变得复杂,并且难以调试。
多线程是一种专门的多任务处理形式,而多任务处理则使您的计算机能够同时运行两个或更多程序。
我认为这个链接可以帮助你。
http://www.tutorialspoint.com/cplusplus/cpp_multithreading.htm
大多数情况下,当你希望同时完成多项任务时会用到此功能。例如,在游戏中加载关卡或同时下载多个文件时,你可能希望窗口仍然响应用户输入等。这是针对那些真的不能等待其他处理完成的事情。当然,两者可能会变得更慢,但它确实给人一种多个事情同时发生的错觉。
当你能够通过并行处理来加快算法时,使用多线程。当线程需要访问父进程的资源时,与 multiprocessing 相对使用。
我的两分钱。
使用案例:
建议: