摘要:
其实应该算是补遗了,之前的一篇随笔曾经介绍了如何在XPO中为非主键字段获取Int型自增量,但今次在实际应用中发现该段代码是有问题的。最大的问题,它并不线程安全的,这一点在今天的一个Parallel.For测试中暴露无遗。原代码使用一个MaxIdGenerationAttempts = 7的常量来控制重试次数,如果发现当前保存操作引发了LockingException则歇一段时间重试。这样有2个问题,一来它并没有根本上解决线程安全问题,在并发量稍高一点的情况下,某条不走运的线程重试了7次依然无法成功完成操作后还是会引发异常;二来多次的读写尝试耗费了大量的时间。加大这个常量可以延后引发异常的时间点 阅读全文