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