![]() |
1
5
应该由被调用方而不是调用方执行锁定。被叫方是唯一知道需要同步什么的人,也是唯一能够确保同步的人。如果你把锁留给打电话的人,你会做三件坏事:
|
![]() |
2
1
|
![]() |
3
1
我们了解到,如果您需要同时执行几个相关的细粒度操作,或者使用对内部结构的引用,那么外部锁定提供了一些优势—您可以持有一个锁,只要您需要您的工作集不受其他线程的影响。 例如:管理项目列表的容器可能希望提供一个api来获取对一个项目的可变引用。在没有外部锁定的情况下,一旦函数调用完成,另一个线程可能会锁定和改变数据。一个可行的解决方案是返回一个项目的副本,但这是低效的。
|
![]() |
Nighty · 从mm文件导入时,DBAccess for iOS出错 10 年前 |