社区
C#
帖子详情
.net 中静态方法中的局部变量是不是线程安全的?
playcity
2008-12-14 04:02:21
如题。
...全文
211
9
打赏
收藏
.net 中静态方法中的局部变量是不是线程安全的?
如题。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
LcngYexue
2011-10-19
打赏
举报
回复
[Quote=引用 7 楼 gomoku 的回复:]
局部变量本身肯定是线程安全的,或者说它根本没有线程安全的问题。
局部变量分配在栈上,而栈是专属于线程的概念 - 每个线程都有它自己的栈。
[/Quote]
经典的无以复加!
playcity
2008-12-16
打赏
举报
回复
UP.
playcity
2008-12-16
打赏
举报
回复
UP.
zhnzzy
2008-12-16
打赏
举报
回复
[Quote=引用 7 楼 gomoku 的回复:]
局部变量本身肯定是线程安全的,或者说它根本没有线程安全的问题。
局部变量分配在栈上,而栈是专属于线程的概念 - 每个线程都有它自己的栈。
[/Quote]
学个
gomoku
2008-12-16
打赏
举报
回复
局部变量
本身
肯定是线程安全的,或者说它根本没有线程安全的问题。
局部变量分配在栈上,而栈是专属于线程的概念 - 每个线程都有它自己的栈。
playcity
2008-12-16
打赏
举报
回复
如果这个局部变量 是只有独占才能访问的,比如给文件写信息。如果你在这里没有进行处理(比如有个信号量在这里)这个静态函数就是线程不安全的。
如果这个局部变量每次调用都在一个新的内存地址,应该不存在线程安全的问题,如果都在一个地址,应该有线程安全问题。
===========================================================
如public static string getpath(stirng username,string uploadbasepath)
{
username = username + "/";
uploadbasepath += "/";
return username + uploadbasepath;
}
如这段代码,是不是线程安全呢?
Fibona
2008-12-16
打赏
举报
回复
如果这个局部变量 是只有独占才能访问的,比如给文件写信息。如果你在这里没有进行处理(比如有个信号量在这里)这个静态函数就是线程不安全的。
如果这个局部变量每次调用都在一个新的内存地址,应该不存在线程安全的问题,如果都在一个地址,应该有线程安全问题。
烈火蜓蜻
2008-12-14
打赏
举报
回复
不是,安全是要你自己实现
烈火蜓蜻
2008-12-14
打赏
举报
回复
不是,安全是要你自己实现
通过七个关键编程技巧得益于静态内容
本文讨论: 类型构造函数的性能和行为 静态成员和
线程安全
.NET
Framework2.0
中
的静态类 某种类型共享成员的最佳做法本文使用下列技术:
.NET
Framework、C#、VisualBasic本页内容: 精确的代价 例外规则 构造函数锁 静态反射
.NET
Framework2.0
中
的静态类 静态
局部变量
静态假象 静态小结当您在一个基于
.NET
的应用程序
中
操作时,经常会碰到带有Shared方法或静态字段的类型。因为这些抽象具有特殊的行为,所以要询问一些有关实施的重要问题。运行库在何时初始化静态字段?该方法线程是否安全?该类是否会导致瓶颈?在本文
中
,我将为您介绍应该
全局变量、静态变量、
局部变量
线程安全
问题
1、静态变量 静态变量即静态成员变量。只要有修改变量值的操作,无论是在单例或者非单例都是线程不安全的;而如果线程只是读取变量的值,而不会改变变量的值,这种情况下则是线程是安全的。 产生
线程安全
问题的原因:静态变量即类变量,只初始化一次,位于方法区,为所有对象共享,共享一份内存,一旦静态变量被修改,其他对象均对修改可见,故线程非安全。 静态变量多线程操作示例: 根据上图代码可知,当线程1执行了number = 1; number = 2; 后,线程2获得执行权,number = 1;然后当线程1获得执行权执
关于变量的
线程安全
成员变量和静态变量是否
线程安全
? 如果它们没有被共享,则
线程安全
如果它们被共享了,根据它们的状态是否能够改变,又分为两种情况 如果只有读操作,则
线程安全
如果有读写操作,则这段代码是临界区,需要考虑
线程安全
局部变量
是否
线程安全
?
局部变量
是
线程安全
的 但
局部变量
引用的对象则未必 如果该对象没有发生逃逸,则他是
线程安全
的 如果该对象发生了逃逸,需要考虑
线程安全
public static void test1() { int i = 10; i++; } 每个线程调用
局部变量
与成员变量的
线程安全
分析
局部变量
与成员变量的
线程安全
分析 前言 观看黑马程序员全面深入学习java并发编程遇到了疑问,进行总结,同时发现了一篇文章写的也不错,是根据视频进行的总结。https://blog.csdn
.net
/m0_37989980/article/details/111400237
线程安全
分析 成员变量和静态变量是否
线程安全
? 如果它们没有共享,则
线程安全
如果它们被共享了,根据它们的状态是否能够改变,又分两种情况 如果只有读操作,则
线程安全
如果有读写操作,则这段代码是临界区,需要考虑线程安
关于变量的
线程安全
问题
Hashtable
中
,单独的get和put都是
线程安全
的,但组合起来使用,则不保证
线程安全
,因为get和put之间不是原子的,可能发生上下文切换。如果多线程下使用集合,除了上面的Vector和HashTable,还可以使用Collections的下列方法,把普通的集合类变成
线程安全
的集合类。String、Integer类都是不可变类,因此它们的方法都是
线程安全
的,修改内容后会返回一个新的对象,而不会修改原始对象的值。需要
线程安全
时使用左边的,不需要时使用右边的,同一行的用法是一样的。
C#
110,533
社区成员
642,574
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章