|
|
1
4
我不认为您能够对锁函数做同样的事情,因为您将尝试从它内部屈服。尽管如此,在这两种语言中,这看起来都是一种危险的方法,因为这意味着锁可以被持有任意时间(例如,如果一个线程调用
倒转逻辑可能更有意义,提供
这将使迭代回到您的控制之下,确保序列完全迭代(假设
编辑 下面是一个可以永久保存锁的代码示例。
为了开始枚举前5项,我们已经获取了锁。但是,我们没有继续执行序列的其余部分,因此锁不会被释放(可能我们稍后会根据用户反馈或其他内容枚举其余的方法,在这种情况下,锁最终会被释放)。 在大多数情况下,正确编写的代码将确保它处理原始枚举器,但一般来说,无法保证这一点。因此,序列表达式的设计应该是健壮的,只允许部分枚举。如果您打算要求调用方同时枚举集合,那么强制它们将函数传递给您以应用于每个元素,这比返回一个序列要好,因为它们可以按照自己的意愿枚举该序列。 |
|
|
2
4
我同意kvb的说法,代码可疑,您可能
不要
把锁锁住。但是,有一种方法可以更舒适地使用
您可以编写一个函数,该函数开始持有锁并返回
然后你可以写例如:
这基本上是实现类似C的
|