Avi*_*ash 6 c++ multithreading new-operator
我正在读一本书高效的C++:性能编程技术作者如下关于全局new和delete运算符:
它们在进程上下文中管理内存,并且由于进程可能会生成多个线程,new()并且delete()必须能够在多线程环境中运行.此外,内存请求的大小可能因请求而异.
new()
delete()
在第6章中单线程内存池.
这是真的?我认为C++没有多线程环境的概念,程序员需要处理的是通过使用某种互斥方式.
sha*_*oth 7
这将取决于实施.例如,Visual C++运行时在早期版本中同时具有单线程和多线程版本的堆,但从Visual C++ 2005开始它只有一个多线程版本.这篇MSDN文章有一个很好的摘要表.
当使用多线程堆时,对内存分配和释放的调用是线程安全的,代价是额外的开销.
归档时间:
13 年,11 月 前
查看次数:
2511 次
最近记录:
7 年,9 月 前