实例化两个对象,用两个线程同时访问一个公共方法会不会出现问题?

hjhwfw 2004-08-19 08:11:23
希望大家讨论
...全文
381 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjhwfw 2004-08-23
  • 打赏
  • 举报
回复
接分,各位
ncucf 2004-08-20
  • 打赏
  • 举报
回复
呵呵,我对vc里面的多线程操作还算清楚,c#中的,还没真正接触啊!
hjhwfw 2004-08-20
  • 打赏
  • 举报
回复
ncucf(ncu晨风)
能具体说一下吗?
vzxq 2004-08-19
  • 打赏
  • 举报
回复
用lock吧
hjhwfw 2004-08-19
  • 打赏
  • 举报
回复
lock(this)应该将该对象实例的所有方法都锁定吧?
还是只锁定threadToRun方法
zhangzgl 2004-08-19
  • 打赏
  • 举报
回复
如果希望不产生问题可以使用线程同步,线程同步是一种确保不同线程协调其对共享资源(如:控制台)的访问方式,实现同步,在C#中用lock提供,锁机制确保同一时间只有一个线程可以访问某个方法或代码.
如:
class Test
{
static void Main()
{
Test objTest=new Test();
Thread newThread=new Thread(new ThreadStart(objTest.threadToRun));
newThread.Start();
tbjTest.threadToRun();
}
void threadToRun()
{
lock(this)
for(int i=0;i<100;i++)
{
Console.WriteLine("线程数为:{0}",i)
}
}

}
hjhwfw 2004-08-19
  • 打赏
  • 举报
回复
MSDN每个类都会有这样一段:
线程安全
此类型的所有公共静态(Visual Basic 中为 Shared)成员对多线程操作而言都是安全的。但不保证任何实例成员是线程安全的。

希望哪个高手给解释一下?
我不懂电脑 2004-08-19
  • 打赏
  • 举报
回复
如果操作了共享数据如类变量容易出问题,需要提供互斥操作才能保证线程安全
hjhwfw 2004-08-19
  • 打赏
  • 举报
回复
MSDN每个类都会有这样一段:
线程安全
此类型的所有公共静态(Visual Basic 中为 Shared)成员对多线程操作而言都是安全的。但不保证任何实例成员是线程安全的。

希望哪个高手给解释一下?
hjhwfw 2004-08-19
  • 打赏
  • 举报
回复
楼上能不能说清楚些
lxcc 2004-08-19
  • 打赏
  • 举报
回复
公共方法

//看你是啥方法,比如有独享访问资源的时候,是不行的!
jietuan 2004-08-19
  • 打赏
  • 举报
回复
锁定方法,某个进程访问时。
lglesias 2004-08-19
  • 打赏
  • 举报
回复
hehe
学习中
hjhwfw 2004-08-19
  • 打赏
  • 举报
回复
上面只是一个简单的计算,
如果函数中有数据访问并且时间很长(20秒),不知会不会有问题
hjhwfw 2004-08-19
  • 打赏
  • 举报
回复
private int i;
public void test()
{
i+=100;
}
lanyahu 2004-08-19
  • 打赏
  • 举报
回复
帮你up
Proyang 2004-08-19
  • 打赏
  • 举报
回复
有代码么?
canoe_eyes 2004-08-19
  • 打赏
  • 举报
回复
理论上说,不会的.具体要看你的公共方法的影响.
hivak47 2004-08-19
  • 打赏
  • 举报
回复
设置好的话,不会出问题的.
Samen168 2004-08-19
  • 打赏
  • 举报
回复
要看具体的实现方式
加载更多回复(4)

110,525

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧