boost::unordered_map <std::string, s4u::Mailbox *> *s4u::Mailbox::mailboxes = new boost::unordered_map<std::string, s4u::Mailbox*> ();
boost::unordered_map <std::string, s4u::Mailbox *> *s4u::Mailbox::mailboxes = new boost::unordered_map<std::string, s4u::Mailbox*> ();
s4u::Mailbox *s4u::Mailbox::byName(const char*name) {
s4u::Mailbox *res;
try {
res = mailboxes->at(name);
} catch (std::out_of_range& e) {
// FIXME: there is a potential race condition here where two actors run Mailbox::byName on a non-existent mailbox
s4u::Mailbox *s4u::Mailbox::byName(const char*name) {
s4u::Mailbox *res;
try {
res = mailboxes->at(name);
} catch (std::out_of_range& e) {
// FIXME: there is a potential race condition here where two actors run Mailbox::byName on a non-existent mailbox
// Only one simix object will be created, but two S4U objects will be created.
// Only one S4U object will be stored in the hashmap and used, and the other one will be leaked.
// Only one simix object will be created, but two S4U objects will be created.
// Only one S4U object will be stored in the hashmap and used, and the other one will be leaked.