关于Lock静态变量的方法
有如下的伪代码
由于当初设计的时候没有考虑周全,导致GetData1() 和GetData2()都调用了数据访问层的同一个方法,我觉得对代码修改最小的修改的方法就是 增加一个静态变量,如
然后,人家说 static线程是不安全的,需要锁一下,因为没有用过,想问大家一下,是不是这样锁的:
public class Test
{
public static DataTable GetData1()
{
DataTable dt=DAL.GetData();
//一系列操作
return dt;
}
public static DataTable GetData2()
{
DataTable dt=DAL.GetData();
//一系列操作
return dt;
}
}由于当初设计的时候没有考虑周全,导致GetData1() 和GetData2()都调用了数据访问层的同一个方法,我觉得对代码修改最小的修改的方法就是 增加一个静态变量,如
public class Store
{
public static DataTable dt;
}
public class Test
{
public static DataTable GetData1()
{
Store.dt=DAL.GetData();
//一系列操作
return dt;
}
public static DataTable GetData2()
{
DataTable dt=Store.dt;
//一系列操作
return dt;
}
}然后,人家说 static线程是不安全的,需要锁一下,因为没有用过,想问大家一下,是不是这样锁的:
public class Store
{
public static DataTable dt;
}
public class Test
{
public static object obj;
public static DataTable GetData1()
{
DataTable dt= GetDt();
//一系列操作
}
public static DataTable GetData2()
{
DataTable dt= GetDt();
//一系列操作
}
public static DataTable GetDt()
{
lock(obj)
{
if(Store.dt!=null)
{
return Store.dt;
}else
{
Store.dt=DAL.GetData();
return Store.dt;
}
}
}
}
...全文
相关推荐
利用静态变量对函数访问次数计数.zip
利用静态变量对函数访问次数计数
python 3.7 静态变量和内部变量的bug(csdn)————程序.pdf
python 3.7 静态变量和内部变量的bug(csdn)————程序
c#线程 lock用法
线程 是c# 的一个难点,这里将线程的相关用法上传上了大家分享。希望有用
使用Java单例模式实现一个简单的日志记录器.txt
这段代码实现了一个简单的日志记录器Logger,其中使用了Java的单例模式。在类的构造方法中,首先定义了一个静态变量instance,用于保存Logger的唯一实例。然后定义了一个静态锁对象lock,用于保证线程安全。接着定义了一个字符串变量logFilePath,用于保存日志文件的路径。在getInstance()方法中,通过判断instance是否为空来创建一个新的Logger实例并返回唯一实例。最后定义了一个写入日志的方法writeLog(),将消息写入到指定的文件中。这个简单的示例代码展示了如何使用Java单例模式来实现一个日志记录器的简单功能,方便了对日志数据的管理和记录。
c#多线程中Lock()关键字的用法小结
本篇文章主要是对c#多线程中Lock()关键字的用法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助


