c++ - Thread safety for overloaded operator new -


though standard doesn't guarantee thread-safety new, of multi-threading operating systems support thread-safe operator new.

i implementing own memory management dynamic allocation of class (say myclass) in code. thread safety of myclass, may have use pthread or boost:: library.

i thought if new already thread safe can overload myclass , leverage safety without worrying using libraries.

class myclass { // data public:   void* operator new (size_t);   void operator delete (void*); }; 

is fair assumption c++03 systems/compilers?

edit: since question not followed few users. detailing part:

if have 2 threads new int() , new int(), 2 unique memory addresses returned. now, in overloaded myclass::new not using global ::new() or threading library; own memory manager (which doesn't know threads). pseudo code:

char pool[big_size]; void* myclass::operator new (size_t size) {   // memory 'pool' without using thread library   return p; } 

my assumption is, since global ::new thread safe, overloaded operator new should thread-safe. in other words, compiler should emitting thread-safety related code wherever encounters new keyword. correct assumption ?

it is.

however note in c++11 new thread safe.

of course, when you add thread unsafe code, makes operator new thread unsafe.

following edit (which changed whole question):

the assumption compiler adds thread safety code around new call pretty wrong. sane implementations add thread safety within inner implementation of operator new (already because of efficiency considerations per-thread memory pools).

that is, when write thread unsafe allocation function, naming operator new not magically make thread safe, other function, special way invoked.


Comments

Popular posts from this blog

c# - Getting control value when switching a view as part of a multiview -

objective c - Change font of selected text in UITextView -

php - Accessing POST data in Facebook cavas app -