2) Use `shared` storage class and mutex like this:

import vibe.utils.hashmap;

shared HashMap!(int, int) map;

void foo()
{
   synchronized
   {
      //use map
      map[1] = 1;
   }
}

Locking every time you use the map dosn't rly seem reasonable. It's not particulary fast and you might forget to lock the map at some point (or does the shared modifier not allow you to do this in D?)

I'm not that fammiliar with the synchronzed statement but shouldn't it be locked on some object?

void bar()
{
   //Can one thread be in this block...
   synchronized
   {
     map[1] = 1;
   }

   //... while another thread is in this block?
   synchronized
   {
     map[2] = 2;
   }
}

If that is the case are you not limited in the way you can update the map eg only in a single block?


Reply via email to