Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 多线程理论场景_Multithreading_Performance_Theory - Fatal编程技术网

Multithreading 多线程理论场景

Multithreading 多线程理论场景,multithreading,performance,theory,Multithreading,Performance,Theory,我有一个多线程应用程序,它使用10个线程的线程池。每个线程需要5分钟来处理输入。是否有法律/公式规定处理n个输入所需的总时间 换言之,每5分钟可以处理10个输入,那么处理100个输入需要50分钟,这对吗除了计算能力(处理器/内核)和硬件资源依赖性(硬盘、I/O竞争等)之外,还应考虑数据依赖性。例如,如果每个输入的处理包括由所有其他线程更新共享数据,这需要锁定(互斥),那么总吞吐量将小于10倍,即使它是具有10个以上内核的多核处理器。最大加速取决于临界截面的比例。如果需要公式,请参考著名的阿姆达尔

我有一个多线程应用程序,它使用10个线程的线程池。每个线程需要5分钟来处理输入。是否有法律/公式规定处理n个输入所需的总时间


换言之,每5分钟可以处理10个输入,那么处理100个输入需要50分钟,这对吗

不是,你必须考虑总的计算能力。例如,如果一个线程需要5分钟来完成工作,而处理器在这段时间内被完全消耗,那么额外的线程对您没有帮助。另一个极端是,如果处理器利用率接近于零(例如,所有的时间都花在等待I/O上),那么建议的计算就可以工作了。因此,您必须考虑计算所使用的实际资源。

< P>除了计算能力(处理器/内核)和硬件资源依赖性(硬盘、I/O竞争等)之外,还应考虑数据依赖性。例如,如果每个输入的处理包括由所有其他线程更新共享数据,这需要锁定(互斥),那么总吞吐量将小于10倍,即使它是具有10个以上内核的多核处理器。最大加速取决于临界截面的比例。如果需要公式,请参考著名的阿姆达尔定律:

除了计算能力(处理器/核心)和硬件资源依赖性(硬盘、I/O竞争等)之外,还应考虑数据依赖性。例如,如果每个输入的处理包括由所有其他线程更新共享数据,这需要锁定(互斥),那么总吞吐量将小于10倍,即使它是具有10个以上内核的多核处理器。最大加速取决于临界截面的比例。如果你需要一个公式,请参考著名的阿姆达尔定律:

你能分享你的代码吗?@RaviJain这只是一个理论场景,你能分享你的代码吗?@RaviJain这只是一个理论场景