- 鉴于在.NET中已存在一些尺度的汇合类了,假设你已具有它们的线程平安(thread-safe)版本,那末甚么样的情况下,你才能够从能并发地列举统一个被别的线程同时编纂的汇合中取得优点?我们固然对此已有所懂得,不外仍是很想多听听人人的定见。
- 假定你的确具有第一条提到的情况,那末为了让从列举器中前往的数据是可用的,你也许必要的最小包管措施是甚么?比方,关于一个字典对象假如不存在并发编纂(增加/更新/删除),你能够以为它是线程平安的,你将能在列举过程当中正确地失掉字典中的内容;但是,假如存在并发会见,你不再能失掉已不存在于字典中的内容,你大概看不到并发增加或更新的工具,也大概仍然能看到那些被并发地删除的条目。
- 假如我们的确撑持在线程平安的汇合长进行面向并发编纂的列举操纵,那末你但愿可以从“在并发编纂上抛出非常”如许的举动中恢复之前的操纵吗?
- 最初,你希冀看到的既线程平安又能完成可伸缩正本的汇合中,哪一个最主要?
一个主要的附加功效是可以异步地转储(dump),即偶然为了备份能够把内存的数据缓存到耐久性存储,这就请求线程平安的列举历程。(实践上,想想——是不是也能线程平安地序列化?如许的话甚么才是默许的举动呢?)
这个点子就是让“Lock”办法主动地用lock/unlock如许的布局把你的回调包抄起来。这类办法也不会限定你利用这些类以后已表露出来的原子操纵。实践上,大概让Lock来取得Func而非Action更好,而且ConcurrentList类自己不真正具有任何用于get、set、enumerate的办法。利用这类体例,你就只能会见在锁定局限内的类。
欢迎光临 仓酷云 (http://ckuyun.com/) | Powered by Discuz! X3.2 |