再问一下一个lock的问题。
public class TestClass
{
public int Column1 { set; get; }
public int Column2 { set; get; }
//private object obj = new object();
object lockindex = 0;
public void TestMethodA(int i)
{
lock (lockindex)
{
while (true)
{
Console.WriteLine(Thread.CurrentThread.Name +":"+ lockindex.GetType());
Thread.Sleep(10); }
//Console.WriteLine(Column1);
}
}
public void TestMethodB()
{
Console.WriteLine("B_Start");
Console.WriteLine("B_End");
}
}
这里 obj 与 lockindex 竟然可以达到相同的作用。
之前一直说不能lock值类型的对象。会每次都装箱,但是现在感觉一点问题也没有。
为什么会这样呢?
------解决方案--------------------lock (this)
{
//执行操作
DoSomething()....
//比如操作静态变量,缓存等
}
防止并发操作,当前用户操作完,下个用户才能再进行操作
一般lock和一个静态型object变量进行配合
先声明一个
private static object symObj = new object();
lock(symObj)
{
//执行操作
DoSomething()....
//比如操作静态变量,缓存等
}
要是 int string 什么的 就不行了
------解决方案--------------------lock 通常用于资源共享 同时 又要避免本线程使用资源时 资源被其他线程修改
撸主 怎么用lock玩起了线程同步了
------解决方案--------------------应该是把 lock byte[] 也是编译通过的
------解决方案--------------------