资源的有序访问问题

在多线程程序中,使用锁来保证资源的有序访问,即一个操作不会导致另一个正在进行的操作无效。举个例子,一个操作正在遍历一个list,而另一个操作却把这个list clear掉了,导致迭代器失效。

然而这个问题并不仅仅是多线程才需要考虑的问题。举个例子,当一个操作在遍历list,针对每个元素进行某一个调用,而这个调用破坏了list的结构,那么当它访问时,迭代器也就失效了。继续使用迭代器就会出现错误。

仔细的编程保证操作的顺序正确并不能解决问题。可能元素的处理的调用将利用客户端写的代码,而这些代码如果可能对你正在处理的资源造成影响,那么就是危险的。

 

像这种调用链上发生的错误并不能通过锁来解决,它不属于线程同步范围。

简单的处理方法是调用返回的时候进行检查,确认迭代器是否有效。设置标志位会起到作用,因为不是并发的场景。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值