局部变量的作用域

导航

<2008年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

统计

公告

我的邮件:

留言簿(6)

随笔分类

随笔档案

文章档案

我的链接

搜索

最新评论

  • 1. re: 多线程和函数里的静态变量
  • ls,多线程的问题会造成静态变量被初始化多次的。
  • --heroboy
  • 2. re: 多线程和函数里的静态变量
  • 靠,都説些啥啊,静态变量本身都只初始化一次,还扯出多线程的问题!郁闷!
  • --路过
  • 3. to boli
  • 刚才讨论的已经超出语言的范畴了:)

    不过小明的另外一个问题是:不付出代价是有前提的,这个前提是“正确”,错误的做法再“廉价”也没有用
  • --局部变量
  • 4. re: 多线程和函数里的静态变量

  • C++ 只是编译器的C++。。。运行期没有C++ 只有面向过程。。。
  • --boli
  • 5. to 小明
  • 你的做法恰恰违反了c++的精神, 如果程序的某次运行根本不需要调用bar(),那我的做法没有为不使用的东西付出代价,而你的付出了.
  • --局部变量
  • 6. re: 介绍一下Subversion
  • 公司用的是StarTeam和perforce,都是很贵的软件
    功能也确实强大
  • --小明
  • 7. re: 多线程和函数里的静态变量
  • 代价不高,也是有代价的。不符合C++的精神:你不需要为你不使用的东西付出代价。

    这个例子,直接在线程启动前调用一下bar(),就什么问题都解决了,也不需要什么同步了
  • --小明
  • 8. to 清风雨
  • 对于vc来说,如果我用多线程运行时库, 它就应该保护。否则可以不保护。我想到了一种实现方法,代价根本不高.
  • --局部变量
  • 9. re: 多线程和静态变量
  • 不好意思,明白你的意思了。不过,我觉得编译器视乎也很难对你的static foo a;进行保护,他未必知道你要多线程使用bar函数。他要是随便多线程保护掉,那么性能上会有损失。最关键的是,这本来是用户层是否多线程事,编译器来做似乎不太合理。
  • --清风雨
  • 10. re: 多线程和静态变量
  • 我觉得输出很正常啊,甚至输出乱码都有可能。
    函数里的static 变量,在函数第一次调用时初始化,程序退出时析构(函数间的内部static变量析构顺序是不确定的)。
  • --清风雨
  • 11. re: 多线程和函数里的静态变量

  • 其实,构造函数到汇编这层后 就是一普通函数,他有可能被不同线程执行。。。 而所谓的单件 就是一全局部变量~  临界区也是全局的~ 全局的东西被构造出来之后,才能轮到 程序执行。。也就是线程执行。。。

    所以说。。我认为你这样还是 对 全局部变量 进行多线程访问同步控制的问题 -.-!
  • --bl
  • 12. to heroboy
  • 握手, 这个例子正是我在考虑单件的问题时想到的, 其实单件还有几个其它问题, 打算过几天全写出来。

    to 玻璃小屋:
    “临界区先于线程就可以了”,在这个例子中是这样。但在实际项目中只保证这一点是不够的,必须保证临界区先于对象, 否则就可能在临界区初始化之前Enter它了。
    据我所知,用户程序中要保证临界区先初始化,只能靠#pragma init_seg,但我想多数C++程序员根本不知道这个选项
  • --局部变量
  • 13. re: 多线程和函数里的静态变量
  • 这个例子很好的说明了,这种形式的单件的缺点就是构造的时候线程不安全
  • --heroboy
  • 14. re: 多线程和函数里的静态变量

  • 倒。。。....那临界区先于线程就可以了。。。
  • --玻璃小屋
  • 15. to bl: 你的方法是错的
  • 我在最后已经说了“
    如果是在用户程序的层次上,则麻烦的多,因为这类方法都会涉及到另一个静态变量的初始化” 。所以常见的多线程同步方式在这里都会失效。
    你的问题是无法保证临界区先于对象初始化,虽然也许在这个例子中确实是它先初始化的。
  • --局部变量

阅读排行榜

评论排行榜

2008年5月29日 #

多线程和函数里的静态变量

发表于 2008-05-29 09:33 局部变量 阅读(912) | 评论 (16)编辑 收藏

2008年5月20日 #

使用SVN实现版本号自增

发表于 2008-05-20 09:12 局部变量 阅读(748) | 评论 (7)编辑 收藏

2008年3月12日 #

设计的载体是什么?

发表于 2008-03-12 13:36 局部变量 阅读(826) | 评论 (4)编辑 收藏

2008年3月10日 #

转载:extern "C"

发表于 2008-03-10 09:16 局部变量 阅读(890) | 评论 (1)编辑 收藏

2008年2月28日 #

一个更改键盘映射的小工具

发表于 2008-02-28 09:20 局部变量 阅读(683) | 评论 (1)编辑 收藏

2008年2月13日 #

翻译:sqlite中原子提交的实现

发表于 2008-02-13 09:47 局部变量 阅读(1678) | 评论 (4)编辑 收藏

2008年1月8日 #

再记自己的两个常识性错误

发表于 2008-01-08 11:58 局部变量 阅读(2012) | 评论 (6)编辑 收藏

2007年12月20日 #

Windows下配置SVN 1.4.5 + APACHE 2.2.6使用域认证

发表于 2007-12-20 14:28 局部变量 阅读(1936) | 评论 (3)编辑 收藏

2007年12月18日 #

介绍一下Subversion

发表于 2007-12-18 10:42 局部变量 阅读(1045) | 评论 (6)编辑 收藏

2007年10月15日 #

锁?不锁?如何锁?

发表于 2007-10-15 09:46 局部变量 阅读(2634) | 评论 (11)编辑 收藏

2007年7月27日 #

一岁

发表于 2007-07-27 08:52 局部变量 阅读(1708) | 评论 (7)编辑 收藏

2007年6月19日 #

转载: 丁肇中的“无知”与何祚庥的“无所不知”

发表于 2007-06-19 11:38 局部变量 阅读(1467) | 评论 (4)编辑 收藏

转载:何祚庥妄论中医

发表于 2007-06-19 11:29 局部变量 阅读(1429) | 评论 (5)编辑 收藏

转载:现代医学真的昌明吗?

发表于 2007-06-19 11:24 局部变量 阅读(1008) | 评论 (0)编辑 收藏

支持中医

发表于 2007-06-19 11:17 局部变量 阅读(1176) | 评论 (2)编辑 收藏