http://topic.youkuaiyun.com/t/20051209/10/4448077.html
new 操作是否线程安全?
有没有可能两个线程同时检测到同一块内存可用,从而导致冲突? 问题点数:50、回复次数:11Top
src="http://topic.youkuaiyun.com/Include/Board.htm?Tags=" frameborder="0" scrolling="no">
1 楼gohappy_1999(碧水蓝天)回复于 2005-12-09 10:51:03 得分 30
new是C++运行库函数,用运行库的多线程版本是安全的。Top
2 楼pomelowu(羽战士)回复于 2005-12-09 10:56:31 得分 10
是线程安全的,系统保证在规定时间内,每次只有一个线程能够分配和释放默认堆中的内存块。
Top
3 楼hydra2004()回复于 2005-12-09 11:06:50 得分 0
STL自己的内存分配是否是线程安全的呢?比如vector::push_back的时候分配的内存?Top
4 楼goodboyws(深夜不眠者(VCMVP))回复于 2005-12-09 11:11:29 得分 5
要加同步对象Top
5 楼lzzqqq(Jonersen)回复于 2005-12-09 11:47:18 得分 0
应该是吧.Top
6 楼jinghao666666(努力工作!!!)回复于 2005-12-09 11:52:10 得分 0
看见星心里踏实呀Top
7 楼pomelowu(羽战士)回复于 2005-12-09 12:19:19 得分 5
要加同步对象
_____________
访问的时候才需要,如果是分配或者销毁,则不需要。另外,如果不是默认堆,比如自建了辅助堆,也需要注意Top
8 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-12-09 12:50:07 得分 0
堆上等数据,访问时做好同步等Top
9 楼freemme(路在脚下)回复于 2005-12-09 13:32:59 得分 0
upTop
10 楼hydra2004()回复于 2005-12-09 13:46:31 得分 0
STL缺省的内存分配应该是用全局的operator new吧,这样的话只要使用运行库的多线程版本,是否就可以不用再做同步的工作了?Top
11 楼hydra2004()回复于 2005-12-09 13:47:28 得分 0
当然这里的stl对象都是local的,没有全局变量Top