局部变量的作用域
导航
VC知识库BLOG
首页
新随笔
联系
聚合
登录
<
2008年8月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
统计
随笔 - 48
文章 - 2
评论 - 280
引用 - 0
公告
我的邮件:
留言簿(7)
给我留言
查看公开留言
查看私人留言
随笔分类
其它 (7)
(rss)
个人 (3)
(rss)
转载 (6)
(rss)
翻译 (2)
(rss)
原创 (37)
(rss)
支持中医 (4)
(rss)
哲学? (4)
(rss)
技术 (31)
(rss)
随笔档案
2008年5月 (2)
2008年3月 (2)
2008年2月 (2)
2008年1月 (1)
2007年12月 (2)
2007年10月 (1)
2007年7月 (1)
2007年6月 (6)
2007年5月 (1)
2007年4月 (2)
2007年2月 (2)
2007年1月 (2)
2006年12月 (1)
2006年11月 (2)
2006年10月 (2)
2006年8月 (1)
2006年3月 (1)
2006年1月 (1)
2005年11月 (2)
2005年10月 (1)
2005年9月 (2)
2005年8月 (2)
2005年7月 (9)
文章档案
2008年4月 (1)
2005年12月 (1)
我的链接
minix 3.0
我在163上的blog
我在ChinaUnix上的blog
无量光净土论坛
搜索
最新评论
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
阅读排行榜
1. reinterpret_cast和static_cast(5878)
2. 称球问题的一般解法(4586)
3. 微软为什么和联通有仇(3995)
4. NT环境下进程隐藏的实现( 贴出过太多次,看过的就不要浪费时间了 )(3715)
5. 用ntfs流隐藏文件(3580)
6. 我的世界观的转变(3201)
7. 对windows互锁函数的补充(3069)
8. 《GEB》读后感(3061)
9. 又长见识了(2975)
10. 反方观点(2917)
11. 锁?不锁?如何锁?(2893)
12. 纪念我的智齿(2628)
13. C++编译器如何实现异常处理(已发表在vckbase文档中心)(2550)
14. 我的一个常识性错误(2495)
15. 新blog开张(2271)
评论排行榜
1. reinterpret_cast和static_cast(22)
2. 又长见识了(17)
3. 多线程和函数里的静态变量(16)
4. 锁?不锁?如何锁?(11)
5. 对windows互锁函数的补充(11)
6. 新blog开张(11)
7. 《GEB》读后感(10)
8. 我的一个常识性错误(10)
9. 纪念我的智齿(10)
10. 反方观点(10)
11. 微软为什么和联通有仇(9)
12. 我的世界观的转变(8)
13. 称球问题的一般解法(7)
14. NT环境下进程隐藏的实现( 贴出过太多次,看过的就不要浪费时间了 )(7)
15. 一岁(7)
如果你有任何评论、问题、建议,请发邮件给我:
姓名:
Email:
主题:
内容:
Powered by:
Copyright © 局部变量