!!!Help!!! 在VC6.0中 new 是多线程安全的吗?

hollysky 2006-05-28 09:57:41
如题目。
谢谢
...全文
375 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahao 2006-06-24
  • 打赏
  • 举报
回复
当然是安全的
JessC 2006-06-24
  • 打赏
  • 举报
回复
我认为是安全的,它是在进程的堆上分配,就像HeapAlloc之类的函数不指定heap_no_serialize 时的情况吧
双杯献酒 2006-06-24
  • 打赏
  • 举报
回复
应该是安全的。
如果这么基础的东西都不安全,谁还敢用啊。
krfstudio 2006-06-24
  • 打赏
  • 举报
回复
当然,像楼上说的那样,如果你的构造函数不是线程安全的那也还是会出问题的。
krfstudio 2006-06-24
  • 打赏
  • 举报
回复
如果用多线程库就是安全的(编译的时候加 /MT)。
ahao 2006-06-24
  • 打赏
  • 举报
回复
我想楼主的意思就是指内存分配这块吧,如果一定要在构造函数里做线程不安全的事,那谁也没办法了.
wbf420 2006-06-24
  • 打赏
  • 举报
回复
不是安全的!因为new 要调用构造函数!构造函数只能由程序员保证!
hollysky 2006-06-23
  • 打赏
  • 举报
回复
RockHwnd(0 error(s), 0 warning(s), Many bugs)

在Window上内存是有最小的分配单元的,而这个单元通常大于一个对象,那就意味着new或malloc等不一定每次都调用Window API,那么就需要对堆进行管理。然而这些new(获得空间的代码)是否线程安全?我不是关心对内存空间的并行访问问题,而是获得空间时的并发问题。

请赐教。
RockHwnd 2006-06-04
  • 打赏
  • 举报
回复
楼上们,释放和线程安全不安全我想没什么关系吧.
new的多线程是不安全的,多个线程操作一块内存的时候并没有互斥的操作,你线程A刚读进来操作好准备放回去可能就会把刚刚线程B的操作给抹了,还是要做一些人为的程序判断,比如A操作的时候锁定那一块,具体参考<<操作系统原理>>

另外不通过特殊手段根本没法跨进程访问,所有别的进程的new出来的空间当然是安全的!
duoduoliang 2006-06-03
  • 打赏
  • 举报
回复
安全的,但要记住每个线程都要DELETE。
hollysky 2006-06-03
  • 打赏
  • 举报
回复
MuseIn(air supply * 学好Linux)
依据?
JonneyR 2006-05-31
  • 打赏
  • 举报
回复
new出来的东东一定记得释放,多线程要控制好就行了,有始有终就是安全的
gao_ming77 2006-05-30
  • 打赏
  • 举报
回复
new应该和线程关系不大吧。可能同时对一个变量new的话,可能会有内存泄漏,不会出现内存访问错误异常。
MuseIn 2006-05-30
  • 打赏
  • 举报
回复
只要有足够的空间,new是安全的。
hollysky 2006-05-30
  • 打赏
  • 举报
回复
suxk(逍遥小子)
你的说法是我所猜想的,但我希望能有很确定的依据。thanks
hollysky 2006-05-30
  • 打赏
  • 举报
回复
Featured(我握着爱情的门票静静排队……)

这可能会涉及VC60在实现关键字new的代码。
现在我希望我所设计的类在默认的new下可以在多线程下得到正确的地址空间(仅仅new就够了),设想我每要一个几BYTE到几十BYTE的对象居然要去再写一些Lock之类的代码,是很不值得的。如果不是线程安全那甚至要自己管理这些空间了,惨。
suxk 2006-05-30
  • 打赏
  • 举报
回复
只要保证释放就没有问题,New会自己做互斥处理的
Featured 2006-05-30
  • 打赏
  • 举报
回复
虽然不能给予你肯定或者否定的答复,
不过建议你做一些线程保护。

猜测应该是线程安全的,
试想我们经常调用别的dll,而这些dll和我们是共用进程的地址空间的,
它们里面往往含有线程和new,可我们从来不曾关注过要做线程保护

当然了,跨进程肯定是安全的。因为地址空间不同。不会有危险
hollysky 2006-05-30
  • 打赏
  • 举报
回复
或者说并发 new 是否能有正确的结果?
RockHwnd 2006-05-28
  • 打赏
  • 举报
回复
没有任何控制的时候不是线程安全,应该自己控制一下,比如LOCK某些正在操作的内存
加载更多回复(1)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧