Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
方法如何tap并发工作?如果我这样做,我是否必须害怕:
tap
some_object.tap { |o| # time-consuming operation 1 }.tap { |o| # time-consuming operation 2 }
那,在现在或将来,Ruby 会尝试同时执行这些操作吗?你知道,#tap听起来很危险。
#tap
是否保证#tap块按顺序执行(当然,除非在块内做了一些不寻常的事情)?
Tap 不会同时执行该块,而是按顺序执行。所以你不必担心并发问题,因为不存在并发问题。
这里的来源tap:
VALUE rb_obj_tap(VALUE obj) { rb_yield(obj); return obj; }
所以你可以看到它首先调用了块(yield),然后才返回原始对象。不存在并发。
yield
你没有什么可担心的。
Ruby 执行将是顺序的,除非您明确地使其并行(例如创建线程)。