1
17
你可以试试 Parallel extensions (.NET 4.0的一部分) 这些允许您编写如下内容:
当然,result.add需要是线程安全的。 |
2
18
并行扩展是很酷的,但是也可以这样使用threadpool:
|
3
12
注意并发性并不会给你更多的资源。你需要确定什么在减慢计算速度。 例如,如果它是CPU绑定的(并且您在一个核心上),那么相同数量的CPU计时将会转到代码中,不管您是按顺序还是并行方式执行它们。另外,管理线程会带来一些开销。相同的参数适用于其他约束(例如I/O) 只有当calculatesMth在执行过程中使资源保持空闲状态时,才能获得性能提升,而这可以被另一个实例使用。这并不少见。例如,如果任务涉及到IO,然后是一些CPU内容,那么进程1可以在进程2执行IO时执行CPU内容。正如Mats指出的那样,如果你有基础设施,一系列生产者-消费者单元可以实现这一点。 |
4
5
你需要把你想同时做的工作分开。以下是如何将工作拆分为两部分的示例:
|
5
2
您必须回答的第一个问题是是否应该使用线程 如果您的函数calculatesMth()基本上是CPU限制的,即CPU使用量很大,基本上没有I/O使用量,那么我很难看到使用线程的意义,因为线程将在相同的资源上竞争,在本例中是CPU。 如果calculatesMth()同时使用CPU和I/O,那么它可能是使用线程的一个要点。 我完全同意我的回答。我做了一个错误的假设,我们说的是单核CPU,但是现在我们有多核CPU,我的错。 |
6
1
不是说我现在有什么好文章,但你想做的是和生产者消费者一起使用线程工具。 生产者循环并创建任务(在本例中,可能只是将列表或堆栈中的项目排队)。例如,使用者是五个线程,它们从堆栈中读取一个项目,通过计算消耗它,然后将它存储在其他地方。 这样,多线程仅限于这五个线程,在堆栈为空之前,它们都有工作要做。 需要考虑的事项:
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |