JMutex::JMutex()
{
- initialized = false;
+ pthread_mutex_init(&mutex,NULL);
+ initialized = true;
}
JMutex::~JMutex()
int JMutex::Init()
{
- if (initialized)
- return ERR_JMUTEX_ALREADYINIT;
-
- pthread_mutex_init(&mutex,NULL);
- initialized = true;
- return 0;
+ return 0;
}
int JMutex::Lock()
{
if (!initialized)
return ERR_JMUTEX_NOTINIT;
-
+
pthread_mutex_lock(&mutex);
return 0;
}
{
if (!initialized)
return ERR_JMUTEX_NOTINIT;
-
+
pthread_mutex_unlock(&mutex);
return 0;
}
JMutex::JMutex()
{
- initialized = false;
+#ifdef JMUTEX_CRITICALSECTION
+ InitializeCriticalSection(&mutex);
+#else
+ mutex = CreateMutex(NULL,FALSE,NULL);
+ if (mutex == NULL)
+ return ERR_JMUTEX_CANTCREATEMUTEX;
+#endif // JMUTEX_CRITICALSECTION
+ initialized = true;
}
JMutex::~JMutex()
int JMutex::Init()
{
- if (initialized)
- return ERR_JMUTEX_ALREADYINIT;
-#ifdef JMUTEX_CRITICALSECTION
- InitializeCriticalSection(&mutex);
-#else
- mutex = CreateMutex(NULL,FALSE,NULL);
- if (mutex == NULL)
- return ERR_JMUTEX_CANTCREATEMUTEX;
-#endif // JMUTEX_CRITICALSECTION
- initialized = true;
return 0;
}
std::list<ILogOutput*> log_outputs[LMT_NUM_VALUES];
std::map<threadid_t, std::string> log_threadnames;
+JMutex log_threadnamemutex;
void log_add_output(ILogOutput *out, enum LogMessageLevel lev)
{
void log_register_thread(const std::string &name)
{
threadid_t id = get_current_thread_id();
+ log_threadnamemutex.Lock();
log_threadnames[id] = name;
+ log_threadnamemutex.Unlock();
}
void log_deregister_thread()
{
threadid_t id = get_current_thread_id();
+ log_threadnamemutex.Lock();
log_threadnames.erase(id);
+ log_threadnamemutex.Unlock();
}
static std::string get_lev_string(enum LogMessageLevel lev)
}
m_buf += c;
}
-
+
private:
enum LogMessageLevel m_lev;
std::string m_buf;