黑马程序员技术交流社区
标题:
求助关于多线程同步问题
[打印本页]
作者:
黑色海
时间:
2013-10-8 14:12
标题:
求助关于多线程同步问题
本帖最后由 黑色海 于 2013-10-8 14:54 编辑
关键字lock的使用有点疑惑,
如果共享资源是一个循环的时候,该把lock放哪儿才能让多条线程同步,并且不会出现安全问题呢?
class A
{
static string name;
static int age;
public A()
{
}
//public A(string name,int age)
//{
// this.name = name;
// this.age = age;
//}
public void Amethod()
{
A ss = new A();
lock (ss)
{
for (; age < 1000; age++)
{
try { Thread.Sleep(10); }
catch (Exception e) { }
Console.WriteLine(age + Thread.CurrentThread.Name + name);
}
MessageBox.Show("循环完毕。。。");
}
}
}
复制代码
我开了三条辅助线程执行这个方法,当lock在for循环外时会出现1000,1001这样的安全问题,该怎么解决???
作者:
黑色海
时间:
2013-10-8 14:54
刚刚找到问题,并不是lock位置的原因,而是语句中用于中断线程执行的方法Sleep的问题,调用该方法,线程会放弃CPU执行权限,此处换为SpinWait就可以了。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2