用循环处理一个Vector中的各个元素,如果各个元素无依赖关系的话,可以用多线程来加速
Threads.@threads for obj in vecobj
do_sth_to(obj)
end
或者
@sync for obj in vecobj
@async do_sth_to(obj)
end
但是如果 vecobj 里的元素之间存在部分依赖的话,比如 vecobj = [A, B, C]
, 其中 B 与 C 相互独立且都依赖于 A, 那么在处理 vecobj
时,可以先处理元素 A , 再同时处理 B 与 C,这样可以实现部分并发,从而加速计算。
所以该怎么设计这个多线程来实现这个需求呢?可能大致应该这样:
Threads.@threads for obj in vecobj
wait_utill_has_no_dependencies(obj)
do_sth_to(obj)
end
这个 wait_utill_has_no_dependencies
怎么实现呢? 谢谢!