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

objective c - Change font of selected text in UITextView -

php - Accessing POST data in Facebook cavas app -

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