![]() |
1
1
我不知道有没有标准的方法。但是,我将实现以下内容:
一些聪明的元编程可能会减少重复,但我把它作为一个练习留给你。 |
![]() |
2
2
Actors ,您可以始终让更新线程生成一个新线程来更改每个对象,其中每个线程只是锁定、修改和解锁每个对象。然后让更新线程在返回之前连接到它的所有子线程。这会将问题推到运行时的时间表上,并且可以任意安排这些子线程以获得最佳性能。 您可以在具有较重线程的langauges中执行此操作,但是spawn和join可能会有太多开销(尽管线程池可能会减轻一些开销)。 |
![]() |
3
1
抱歉,如果我太天真了,你不只是在对象上同步以使关注点独立吗? 例如
|
![]() |
4
0
据我所知,没有一个标准的方法来实现这一点,你必须弄脏你的手。
work = unshared list of objects that need updating while work is not empty: found = false for each obj in work: try locking obj if successful: remove obj from work found = true obj.update() unlock obj if !found: // Everything is locked, so we have to wait obj = randomly pick an object from work remove obj from work lock obj obj.update() unlock obj 更新线程只有在发现 全部的 另外,可以想象,当更新程序处于 循环,因此更新程序将跳过它。但是,如果您所做的工作量足够大,相对于遍历该循环的成本而言,错误冲突应该很少发生,而且只有在争用率极高的情况下才会发生。 |
![]() |
5
0
对不起,我不知道什么“标准”的方法。下面这是一个线程组,由
免责声明:我对D和并发编程非常陌生,所以代码相当业余。我认为这更像是一个有趣的练习(我也明白这不是你想要的。如果有人有什么建议,我很想听!
|
![]() |
6
0
没有标准溶液,而是根据你的需要而定的一类标准溶液。 |
![]() |
John V · 是否存在单元测试无法发现的逻辑/流错误类型? 7 年前 |
![]() |
Beefster · 为什么ANSI颜色转义以“m”而不是“]”结尾? 7 年前 |
![]() |
Guillermo Gutiérrez · STR转换是如何工作的? 7 年前 |
![]() |
RudziankoÅ · 合并排序数组算法 7 年前 |
|
user8852560 · 构造函数中的验证和构造函数冲突 7 年前 |
![]() |
jav974 · 订购产品时寻找最佳价格组合的算法 7 年前 |
![]() |
hippietrail · 确定浮点数中前导零的数量 7 年前 |