写点什么

Bill McCarthy 质问到“迭代器是一种基础性缺陷吗?”

2008 年 8 月 12 日

迭代器是.NET 编程模型的核心。只有很少的开发人员以索引数据的方式工作,很多人都喜欢使用 for-each 循环来完成大部分任务。但是这种固有地顺序访问方式,在我们大量开发多线程应用程序的时候还适合吗?

如果你考虑一下迭代器获取下一个元素的这一主要任务,然后研究一下它是如何工作,你就应该明白它的重要设计缺陷……这个操作不是原子性的。迭代器是 IEnumerator 或 IEnumerator(Of T) 的实现,IEnumerator 要求你首先调用 MoveNext 方法然后读取 Current 属性。如果你允许多线程使用同样的 IEnumerator,那么你将得到这样一个调用序列:MoveNext、MoveNext、Current、Current,这样将跳过一个条目而重复下一个条目。所以 IEnumerator 并没有很好地考虑多线程的情况。这是一个已知的设计限制,但是不仅如此,像 C#这样实现自己迭代器的语言还为每个线程生成了不同的迭代器。那就是说,C#不仅认可了这种限制,还加强了它。

2008 年 8 月 12 日 20:47218
用户头像

发布了 254 篇内容, 共 38.9 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

anyRTC uni-app 跨平台SDK 发布!总有一款适合你!

anyRTC开发者

uni-app 音视频 WebRTC RTC

对于CRM之于现代化企业的影响以及作用的分析

Learun

敏捷开发 CRM 客户关系管理

很认真的谈一谈程序员的自我修养

北游学Java

程序员自我修养

字节跳动的这份《算法中文手册》火了,完整版PDF开放下载!不少小伙伴靠这份指南成功掌握了算法的核心技能,成功拿到了 BATJ等大厂offer。

Java架构之路

Java 程序员 架构 面试 编程语言

今年最火的 Golang 云原生开源项目,可能就是它了!

阿里巴巴云原生

go 开源 Kubernetes 云原生

架构师训练营第 1 期 -week9

习习

区块链的常识之,什么是区块链股份授权证明机制DPoS?

CECBC区块链专委会

区块链 共识机制

第11代酷睿处理器出色体验的奥秘原来是这个!

intel001

朋友不讲武德急催我给他Java干货教程,我劝他耗子尾汁并丢给他一份GitHub上标星115k+的Java教程,他看了之后连忙向我道歉!

Java架构之路

Java 程序员 架构 面试 编程语言

SpringCloud Alibaba微服务实战三 - 服务调用

AI乔治

Java 架构 微服务 Spring Cloud

SpringCloud Alibaba微服务实战七 - 分布式事务

AI乔治

Java 架构 微服务 Spring Cloud

OpenKruise:阿里巴巴 双11 全链路应用的云原生部署基座

阿里巴巴云原生

Kubernetes 运维 云原生 中间件 存储

区块链能修复企业云计算吗?

CECBC区块链专委会

区块链 云计算

想了解物联网应用的自动部署,看这篇就够了

华为云开发者社区

服务器 华为云 部署

奉劝各位准备面试的Java程序员耗子尾汁赶紧扔掉网上那些千篇一律的面试题,这份《写给大忙人看的Java核心技术》能够让你快速复习

Java架构之路

Java 程序员 架构 面试 编程语言

基于ELK的日志平台介绍

Rayzh

ELK 日志系统

面试官都爱问的ThreadLocal

执墨

ThreadLocal 哈希表 弱引用

利用区块链数字化人民币,中国有望从追随者变为新秩序的领导者

CECBC区块链专委会

区块链 数字人民币

SpringCloud Alibaba微服务实战一基础环境准备

AI乔治

Java 架构 微服务 Spring Cloud

数据库:我没有带闪,不讲武德

比伯

Java 编程 程序员 面试 计算机

年轻人不讲武德!Security五套「源码级」笔记哪里来的?

小Q

学习 编程 面试 spring security SpringCloud

2020年10月公有云性能评测:盛大云-华东蝉联冠军,腾讯云-北京无缘前三

博睿数据

云计算 腾讯云 ucloud 公有云 评测

SpringCloud Alibaba微服务实战四 - 版本管理

AI乔治

Java 架构 微服务 Spring Cloud

SpringCloud Alibaba微服务实战六 - 配置隔离

AI乔治

Java 架构 微服务 Spring Cloud

一次带你全面解析Nginx,从安装JDK开始讲起,收藏当手册

996小迁

Java 学习 编程 架构 面试

SpringCloud Alibaba微服务实战八 - Seata 整合Nacos

AI乔治

Java 架构 微服务 Spring Cloud

软件测试流程

测试人生路

软件测试

阿里P8熬夜完成这两份800页Java面试核心知识原理+框架

Java~~~

Java 程序员 面试 编程语言 架构师

一文带你读懂!华为云在ACMUG技术沙龙上都透露了些啥?

华为云开发者社区

数据库 大数据 数据

SpringCloud Alibaba微服务实战二 - 服务注册

AI乔治

Java 架构 微服务 Spring Cloud

SpringCloud Alibaba微服务实战五 - 限流熔断

AI乔治

Java 架构 微服务 Spring Cloud

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

Bill McCarthy质问到“迭代器是一种基础性缺陷吗?”-InfoQ