大家来看看这样写会不会有并发问题?

zahuifan 2005-03-15 11:01:44
有这样一个类:

class Student {
private static string _name = "";

public void setName(string arg) {
_name = arg;
}
}

由于 _name 是一个静态变量,如果有许多用户同时使用Web页面调用 student.setName("zhf"),会不会有并发冲突的问题,如何避免?
...全文
82 点赞 收藏 13
写回复
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
tmeteor 2005-03-15
会,看例子


using System;

namespace CollisionTest
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
Student s1=new Student ();
s1.setName ("first");
Console.WriteLine(Student.Name);
Student s2=new Student ();
s2.setName ("second");
Console.WriteLine(Student.Name);
}
}


class Student
{
private static string _name = "";

public void setName(string arg)
{
_name = arg;

}

public static string Name
{
get
{
return _name;
}
}
}
}
回复
doubon 2005-03-15
不要声明为静态变量

private string _name = "";
回复
cqzhangq 2005-03-15
会有冲突,如果一个用户设置了值,那么_name都会改变,会影响所有用户。

写个程序试下就知道了
回复
cqzhangq 2005-03-15
会有冲突,如果一个用户设置了值,那么_name都会改变,会影响所有用户。
如果要每个用户都独自使用自己的变量,就需要用实例的变量,就是不用静态变量。
回复
心情解码 2005-03-15
:)


--
回复
xxuu503 2005-03-15
没有
回复
bomb_boy 2005-03-15
怎么回事,怎么都是整分钟发帖?
2005-03-15 11:06:00
2005-03-15 11:06:00
2005-03-15 11:07:00
2005-03-15 11:08:00
2005-03-15 11:09:00
难道没有记秒,我还以为大家都这魔巧呢,原来是系统不够精确
回复
bomb_boy 2005-03-15
同时间回帖,可能微秒不一样,难怪我发帖时速度一下N慢,原来时内部冲突了,呵呵!
回复
bomb_boy 2005-03-15
回复人: 3tzjq(决定放弃VB.Net,重新学习C#) ( ) 信誉:100 2005-03-15 11:06:00 得分: 0
回复人: bomb_boy(梦之星) ( ) 信誉:95 2005-03-15 11:06:00 得分: 0
回复
tylike 2005-03-15
ms-help://MS.MSDNQTR.2003FEB.2052/csref/html/vclrflockstatement.htm
回复
spz1755 2005-03-15
跟一下试试,理论上不知道。
回复
bomb_boy 2005-03-15
绝对不会
回复
3tzjq 2005-03-15
不会!如果虽然_name 是静态变量,但类Student 是一个被实例化的对象。所以...
回复
发动态
发帖子
C#
创建于2007-09-28

10.4w+

社区成员

.NET技术 C#
申请成为版主
社区公告

全世界最好的语言,没有之一.