private static int _nextCode=0;
      /// <summary>
      /// 流水号(长度7位)
      /// </summary>
      public static string NextCode
      {
          get
          {
              if (_nextCode > 5000000)
              {
                  _nextCode = 0;
              }
              return _nextCode++.ToString("0000000");
          }
      }我多线程访问NextCode属性,有没有可能出现重复或锁死现象啊
需不需要在get里面加锁,目前我用线程池最高64个线程同时访问,没有出现重复或锁死现象我想知道的答案是,不加锁,为什么也能正常执行

解决方案 »

  1.   

    不用加锁 
    int是线程安全的Int32 结构.NET Framework 4 其他版本  .NET Framework 3.5 .NET Framework 3.0 .NET Framework 2.0 Silverlight 表示 32 位有符号整数。此类型的所有成员都是线程安全的。 看似修改了实例状态的成员实际上返回一个用新值实例化的新实例。 正如对任何其他类型一样,对于包含此类型的实例的共享变量,也必须通过锁定来保护对其进行的读写,以保证实现线程安全。 http://msdn.microsoft.com/zh-cn/library/system.int32(v=VS.100).aspx