gpt4 book ai didi

multithreading - 具有信号量和伪随机数的概念多线程

转载 作者:行者123 更新时间:2023-12-03 13:16:11 24 4
gpt4 key购买 nike

这是一个非常笼统的问题,主要只是概念上的。我正在考虑测试随机数生成器,以查看其在某些x值(例如掷骰子时为6)上均匀分布后的效果。我现在是如何在一个简单的循环中执行此操作的,但是我当时正在考虑对模拟进行多线程处理。

我想知道这是否会给我带来任何提速,因为我将只有一个随机数生成器在所有具有信号量保护的线程之间共享(需要确保没有两个线程同时访问并生成随机数,这意味着重复结果)。

由于每个线程几乎都不会进行其他操作(仅用于检查和递增x的语句)甚至可以给我更快的结果,或者对一个随机数生成器的依赖是否意味着它与单个线程基本相同?

最佳答案

从理论上讲,至少在线程数量等于使用的内核数量之前,您应该看到性能的提高。但是,实际上,您将添加代码(并因此增加执行时间)来处理多线程基础结构,并且如果每个线程的大部分时间都花在等待缓慢的RNG上,则性能可能会下降。

另一方面,您可以通过一些技巧来提高性能。例如,您可能有一项任务专门用于生成随机数,并且如果您只查找1到6之间的值,则可能可以从RNG的每个结果中生成多个值。您可以将这些值放入队列,然后让其他任务从队列中读取。当然,您必须小心,以免优化不会改变RNG的分布。

除非计算执行周期的想法使您兴奋,否则找到答案的最佳方法是尝试一下。使用探查器找出大部分时间都花在哪里总是有教育意义的-众所周知,这很难使人类仅凭直觉就可以正确解决问题,即使是经验丰富的开发人员也常常对结果感到惊讶。

关于multithreading - 具有信号量和伪随机数的概念多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9485231/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com