我有两个线程:线程1在NSMutableDictionary中设置键值对,稍后读取该值,线程2与另一个键值对做同样的事情。 键是不同的,每个线程只读取它设置的键值对。但是,任何一个线程都可以在另一个线程写入时读取。
所以我的问题是,如果两个线程同时访问同一个NSMutableDictionary的DIFFERENT条目,是否需要保护NSMutableDictionary? (整个NSMutableDictionary"声明"是一个线程还是单个条目上的操作是独立的?)
答案 0 :(得分:0)
你不能改变/改变像字典这样的容器对象,同时也可以从另一个线程读取或写入容器对象。
在字典上设置键/值对正在改变字典。每个键/值对都不是一个独立的实体。
您必须保护字典,否则可能会崩溃或出现其他不良行为。从Objective-C执行此操作的一种简单方法是使用label.translatesAutoresizingMaskIntoConstraints = false
label.leftAnchor.constraint(equalTo: contentView.leftAnchor).isActive = true
label.rightAnchor.constraint(equalTo: contentView.rightAnchor).isActive = true
label.topAnchor.constraint(equalTo: contentView.topAnchor).isActive = true
label.bottomAnchor.constraint(equalTo: contentView.bottomAnchor).isActive = true
指令,并将字典本身用作传递给指令的对象:
@synchronized
从另一个主题:
@synchronized(myDict) {
valueFromDict = myDict[@"someKey"];
}