}
long Logger::inc(string& key, long v)
{
+ lock.Lock();
if (!type->have_key(key))
type->add_inc(key);
flush();
vals[key] += v;
- return vals[key];
+ long r = vals[key];
+ lock.Unlock();
+ return r;
}
long Logger::set(char *s, long v)
}
long Logger::set(string& key, long v)
{
+ lock.Lock();
if (!type->have_key(key))
type->add_set(key);
flush();
vals[key] = v;
- return vals[key];
+ long r = vals[key];
+ lock.Unlock();
+ return r;
}
long Logger::get(char *s)
}
long Logger::get(string& key)
{
- return vals[key];
+ lock.Lock();
+ long r = vals[key];
+ lock.Unlock();
+ return r;
}
void Logger::flush(bool force)
{
+ lock.Lock();
+
timepair_t now = g_clock.gettimepair();
timepair_t fromstart = now - start;
for (vector<string>::iterator it = type->inc_keys.begin(); it != type->inc_keys.end(); it++)
set(*it, 0);
}
+
+ lock.Unlock();
}