局部变量的作用域

导航

<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

公告

我的邮件:

留言簿(7)

随笔分类

随笔档案

文章档案

我的链接

搜索

最新评论

  • 1. re: 用ntfs流隐藏文件
  • 这才是高手嘛,其他的都是跟屁虫,好多的转帖还不完整。不错,不错!
  • --无名
  • 2. re: vs2005编译的程序不能运行的几个解决方法
  • 感谢,我用vs2008也遇到这个问题,按照你的方法解决了:)

    但debug版只拷贝debug相关的还出错,一气之下vc90开头的全部copy,再运行程序就好了
  • --ahr
  • 3. re: 多线程和函数里的静态变量
  • ls,多线程的问题会造成静态变量被初始化多次的。
  • --heroboy
  • 4. re: 多线程和函数里的静态变量
  • 靠,都説些啥啊,静态变量本身都只初始化一次,还扯出多线程的问题!郁闷!
  • --路过
  • 5. to boli
  • 刚才讨论的已经超出语言的范畴了:)

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

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

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

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

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

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

阅读排行榜

评论排行榜

如果你有任何评论、问题、建议,请发邮件给我:

姓名:
Email:
主题:
内容: