developer
developer

Reputation: 678

Heap in multi-threaded environment

How the heap is managed in the multi-threaded environment ?

enter image description here

Upvotes: 1

Views: 2013

Answers (2)

Minthos
Minthos

Reputation: 896

The heap can be shared and protected by a mutex. This is the simplest solution and works well in most cases.

You can have a heap for each thread, but then you have to decide whether you want to allow a deallocation to happen from any thread or only from the thread that made the allocation. Either way it can get pretty hairy. This can a more scalable solution if you have lots of threads and lots of allocations.

Upvotes: 3

Suvarna Pattayil
Suvarna Pattayil

Reputation: 5239

Talking about pthreads,

From the man page,

A single process can contain multiple threads, all of which are executing the same program. These threads share the same global memory (data and heap segments), but each thread has its own stack (automatic variables).

The heap is the same for all threads but the access would depend on the scope of variable used to access the allocated memory.

void* thFn(void*)
{
  char* c = new char[5];
  //etc
  delete[] c;
}

In this case, memory will be allocated on the heap. But c is local to each pthread. Other pthreads can possibly read from that location (retrieving correct values, until memory is released by the thread that allocated it ) if they are allowed to (If they obtain the address somehow).

Upvotes: 1

Related Questions