Cleanup jthread and fix win32 build
parent
f3439c40d8
commit
04e9a9d541
|
@ -31,7 +31,6 @@ BanManager::BanManager(const std::string &banfilepath):
|
|||
m_banfilepath(banfilepath),
|
||||
m_modified(false)
|
||||
{
|
||||
m_mutex.Init();
|
||||
try{
|
||||
load();
|
||||
}
|
||||
|
|
|
@ -82,7 +82,6 @@ QueuedMeshUpdate::~QueuedMeshUpdate()
|
|||
|
||||
MeshUpdateQueue::MeshUpdateQueue()
|
||||
{
|
||||
m_mutex.Init();
|
||||
}
|
||||
|
||||
MeshUpdateQueue::~MeshUpdateQueue()
|
||||
|
|
|
@ -50,9 +50,6 @@ ClientMap::ClientMap(
|
|||
m_camera_direction(0,0,1),
|
||||
m_camera_fov(M_PI)
|
||||
{
|
||||
m_camera_mutex.Init();
|
||||
assert(m_camera_mutex.IsInitialized());
|
||||
|
||||
m_box = core::aabbox3d<f32>(-BS*1000000,-BS*1000000,-BS*1000000,
|
||||
BS*1000000,BS*1000000,BS*1000000);
|
||||
}
|
||||
|
|
|
@ -206,7 +206,6 @@ JMutex g_debug_stacks_mutex;
|
|||
|
||||
void debug_stacks_init()
|
||||
{
|
||||
g_debug_stacks_mutex.Init();
|
||||
}
|
||||
|
||||
void debug_stacks_print_to(std::ostream &os)
|
||||
|
|
|
@ -23,6 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "server.h"
|
||||
#include <iostream>
|
||||
#include <queue>
|
||||
#include "jthread/jevent.h"
|
||||
#include "map.h"
|
||||
#include "environment.h"
|
||||
#include "util/container.h"
|
||||
|
@ -106,7 +107,6 @@ EmergeManager::EmergeManager(IGameDef *gamedef) {
|
|||
|
||||
mapgen_debug_info = g_settings->getBool("enable_mapgen_debug_info");
|
||||
|
||||
queuemutex.Init();
|
||||
|
||||
int nthreads;
|
||||
if (g_settings->get("num_emerge_threads").empty()) {
|
||||
|
|
|
@ -3,11 +3,13 @@ if( UNIX )
|
|||
${CMAKE_CURRENT_SOURCE_DIR}/pthread/jmutex.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/pthread/jthread.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/pthread/jsemaphore.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/pthread/jevent.cpp
|
||||
PARENT_SCOPE)
|
||||
else( UNIX )
|
||||
set(JTHREAD_SRCS
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/win32/jmutex.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/win32/jthread.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/win32/jsemaphore.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/win32/jevent.cpp
|
||||
PARENT_SCOPE)
|
||||
endif( UNIX )
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
|
||||
This file is a part of the JThread package, which contains some object-
|
||||
oriented thread wrappers for different thread implementations.
|
||||
|
||||
Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
to deal in the Software without restriction, including without limitation
|
||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
|
||||
*/
|
||||
|
||||
#ifndef JEVENT_H_
|
||||
#define JEVENT_H_
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#else
|
||||
#include <semaphore.h>
|
||||
#endif
|
||||
|
||||
|
||||
class Event {
|
||||
#ifdef _WIN32
|
||||
HANDLE hEvent;
|
||||
#else
|
||||
sem_t sem;
|
||||
#endif
|
||||
|
||||
public:
|
||||
Event();
|
||||
~Event();
|
||||
void wait();
|
||||
void signal();
|
||||
};
|
||||
|
||||
#endif /* JEVENT_H_ */
|
|
@ -53,10 +53,8 @@ class JMutex
|
|||
public:
|
||||
JMutex();
|
||||
~JMutex();
|
||||
int Init();
|
||||
int Lock();
|
||||
int Unlock();
|
||||
bool IsInitialized() { return initialized; }
|
||||
|
||||
private:
|
||||
#if (defined(WIN32) || defined(_WIN32_WCE))
|
||||
|
@ -76,57 +74,6 @@ private:
|
|||
return false;
|
||||
}
|
||||
#endif // WIN32
|
||||
bool initialized;
|
||||
};
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
class Event {
|
||||
HANDLE hEvent;
|
||||
|
||||
public:
|
||||
Event() {
|
||||
hEvent = CreateEvent(NULL, 0, 0, NULL);
|
||||
}
|
||||
|
||||
~Event() {
|
||||
CloseHandle(hEvent);
|
||||
}
|
||||
|
||||
void wait() {
|
||||
WaitForSingleObject(hEvent, INFINITE);
|
||||
}
|
||||
|
||||
void signal() {
|
||||
SetEvent(hEvent);
|
||||
}
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
#include <semaphore.h>
|
||||
|
||||
class Event {
|
||||
sem_t sem;
|
||||
|
||||
public:
|
||||
Event() {
|
||||
sem_init(&sem, 0, 0);
|
||||
}
|
||||
|
||||
~Event() {
|
||||
sem_destroy(&sem);
|
||||
}
|
||||
|
||||
void wait() {
|
||||
sem_wait(&sem);
|
||||
}
|
||||
|
||||
void signal() {
|
||||
sem_post(&sem);
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif // JMUTEX_H
|
||||
|
|
|
@ -74,7 +74,6 @@ private:
|
|||
|
||||
JMutex runningmutex;
|
||||
JMutex continuemutex,continuemutex2;
|
||||
bool mutexinit;
|
||||
};
|
||||
|
||||
#endif // JTHREAD_H
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
|
||||
This file is a part of the JThread package, which contains some object-
|
||||
oriented thread wrappers for different thread implementations.
|
||||
|
||||
Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
to deal in the Software without restriction, including without limitation
|
||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
|
||||
*/
|
||||
#include <assert.h>
|
||||
#include "jthread/jevent.h"
|
||||
|
||||
Event::Event() {
|
||||
assert(sem_init(&sem, 0, 0) == 0);
|
||||
}
|
||||
|
||||
Event::~Event() {
|
||||
assert(sem_destroy(&sem) == 0);
|
||||
}
|
||||
|
||||
void Event::wait() {
|
||||
assert(sem_wait(&sem) == 0);
|
||||
}
|
||||
|
||||
void Event::signal() {
|
||||
assert(sem_post(&sem) == 0);
|
||||
}
|
|
@ -24,40 +24,27 @@
|
|||
DEALINGS IN THE SOFTWARE.
|
||||
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
#include "jthread/jmutex.h"
|
||||
|
||||
JMutex::JMutex()
|
||||
{
|
||||
pthread_mutex_init(&mutex,NULL);
|
||||
initialized = true;
|
||||
assert(pthread_mutex_init(&mutex,NULL) == 0);
|
||||
}
|
||||
|
||||
JMutex::~JMutex()
|
||||
{
|
||||
if (initialized)
|
||||
pthread_mutex_destroy(&mutex);
|
||||
}
|
||||
|
||||
int JMutex::Init()
|
||||
{
|
||||
return 0;
|
||||
assert(pthread_mutex_destroy(&mutex) == 0);
|
||||
}
|
||||
|
||||
int JMutex::Lock()
|
||||
{
|
||||
if (!initialized)
|
||||
return ERR_JMUTEX_NOTINIT;
|
||||
|
||||
pthread_mutex_lock(&mutex);
|
||||
assert(pthread_mutex_lock(&mutex) == 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int JMutex::Unlock()
|
||||
{
|
||||
if (!initialized)
|
||||
return ERR_JMUTEX_NOTINIT;
|
||||
|
||||
pthread_mutex_unlock(&mutex);
|
||||
assert(pthread_mutex_unlock(&mutex) == 0);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -16,26 +16,27 @@ You should have received a copy of the GNU Lesser General Public License along
|
|||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
#include <assert.h>
|
||||
#include "jthread/jsemaphore.h"
|
||||
|
||||
JSemaphore::JSemaphore() {
|
||||
sem_init(&m_semaphore,0,0);
|
||||
assert(sem_init(&m_semaphore,0,0) == 0);
|
||||
}
|
||||
|
||||
JSemaphore::~JSemaphore() {
|
||||
sem_destroy(&m_semaphore);
|
||||
assert(sem_destroy(&m_semaphore) == 0);
|
||||
}
|
||||
|
||||
JSemaphore::JSemaphore(int initval) {
|
||||
sem_init(&m_semaphore,0,initval);
|
||||
assert(sem_init(&m_semaphore,0,initval) == 0);
|
||||
}
|
||||
|
||||
void JSemaphore::Post() {
|
||||
sem_post(&m_semaphore);
|
||||
assert(sem_post(&m_semaphore) == 0);
|
||||
}
|
||||
|
||||
void JSemaphore::Wait() {
|
||||
sem_wait(&m_semaphore);
|
||||
assert(sem_wait(&m_semaphore) == 0);
|
||||
}
|
||||
|
||||
int JSemaphore::GetValue() {
|
||||
|
|
|
@ -33,7 +33,6 @@
|
|||
JThread::JThread()
|
||||
{
|
||||
retval = NULL;
|
||||
mutexinit = false;
|
||||
requeststop = false;
|
||||
running = false;
|
||||
}
|
||||
|
@ -53,26 +52,6 @@ int JThread::Start()
|
|||
{
|
||||
int status;
|
||||
|
||||
if (!mutexinit)
|
||||
{
|
||||
if (!runningmutex.IsInitialized())
|
||||
{
|
||||
if (runningmutex.Init() < 0)
|
||||
return ERR_JTHREAD_CANTINITMUTEX;
|
||||
}
|
||||
if (!continuemutex.IsInitialized())
|
||||
{
|
||||
if (continuemutex.Init() < 0)
|
||||
return ERR_JTHREAD_CANTINITMUTEX;
|
||||
}
|
||||
if (!continuemutex2.IsInitialized())
|
||||
{
|
||||
if (continuemutex2.Init() < 0)
|
||||
return ERR_JTHREAD_CANTINITMUTEX;
|
||||
}
|
||||
mutexinit = true;
|
||||
}
|
||||
|
||||
runningmutex.Lock();
|
||||
if (running)
|
||||
{
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
|
||||
This file is a part of the JThread package, which contains some object-
|
||||
oriented thread wrappers for different thread implementations.
|
||||
|
||||
Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
to deal in the Software without restriction, including without limitation
|
||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
|
||||
*/
|
||||
#include "jthread/jevent.h"
|
||||
|
||||
Event::Event() {
|
||||
hEvent = CreateEvent(NULL, 0, 0, NULL);
|
||||
}
|
||||
|
||||
Event::~Event() {
|
||||
CloseHandle(hEvent);
|
||||
}
|
||||
|
||||
void Event::wait() {
|
||||
WaitForSingleObject(hEvent, INFINITE);
|
||||
}
|
||||
|
||||
void Event::signal() {
|
||||
SetEvent(hEvent);
|
||||
}
|
|
@ -24,7 +24,7 @@
|
|||
DEALINGS IN THE SOFTWARE.
|
||||
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
#include "jthread/jmutex.h"
|
||||
|
||||
JMutex::JMutex()
|
||||
|
@ -33,15 +33,12 @@ JMutex::JMutex()
|
|||
InitializeCriticalSection(&mutex);
|
||||
#else
|
||||
mutex = CreateMutex(NULL,FALSE,NULL);
|
||||
if (mutex == NULL)
|
||||
return ERR_JMUTEX_CANTCREATEMUTEX;
|
||||
assert(mutex != NULL);
|
||||
#endif // JMUTEX_CRITICALSECTION
|
||||
initialized = true;
|
||||
}
|
||||
|
||||
JMutex::~JMutex()
|
||||
{
|
||||
if (initialized)
|
||||
#ifdef JMUTEX_CRITICALSECTION
|
||||
DeleteCriticalSection(&mutex);
|
||||
#else
|
||||
|
@ -49,15 +46,8 @@ JMutex::~JMutex()
|
|||
#endif // JMUTEX_CRITICALSECTION
|
||||
}
|
||||
|
||||
int JMutex::Init()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int JMutex::Lock()
|
||||
{
|
||||
if (!initialized)
|
||||
return ERR_JMUTEX_NOTINIT;
|
||||
#ifdef JMUTEX_CRITICALSECTION
|
||||
EnterCriticalSection(&mutex);
|
||||
#else
|
||||
|
@ -68,8 +58,6 @@ int JMutex::Lock()
|
|||
|
||||
int JMutex::Unlock()
|
||||
{
|
||||
if (!initialized)
|
||||
return ERR_JMUTEX_NOTINIT;
|
||||
#ifdef JMUTEX_CRITICALSECTION
|
||||
LeaveCriticalSection(&mutex);
|
||||
#else
|
||||
|
|
|
@ -34,7 +34,6 @@
|
|||
JThread::JThread()
|
||||
{
|
||||
retval = NULL;
|
||||
mutexinit = false;
|
||||
requeststop = false;
|
||||
running = false;
|
||||
}
|
||||
|
@ -52,25 +51,6 @@ void JThread::Stop() {
|
|||
|
||||
int JThread::Start()
|
||||
{
|
||||
if (!mutexinit)
|
||||
{
|
||||
if (!runningmutex.IsInitialized())
|
||||
{
|
||||
if (runningmutex.Init() < 0)
|
||||
return ERR_JTHREAD_CANTINITMUTEX;
|
||||
}
|
||||
if (!continuemutex.IsInitialized())
|
||||
{
|
||||
if (continuemutex.Init() < 0)
|
||||
return ERR_JTHREAD_CANTINITMUTEX;
|
||||
}
|
||||
if (!continuemutex2.IsInitialized())
|
||||
{
|
||||
if (continuemutex2.Init() < 0)
|
||||
return ERR_JTHREAD_CANTINITMUTEX;
|
||||
} mutexinit = true;
|
||||
}
|
||||
|
||||
runningmutex.Lock();
|
||||
if (running)
|
||||
{
|
||||
|
|
|
@ -86,7 +86,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#endif
|
||||
|
||||
#if USE_CURL
|
||||
#include "curl.h"
|
||||
#include "curl/curl.h"
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
@ -708,7 +708,6 @@ void SpeedTests()
|
|||
TimeTaker timer("Testing mutex speed");
|
||||
|
||||
JMutex m;
|
||||
m.Init();
|
||||
u32 n = 0;
|
||||
u32 i = 0;
|
||||
do{
|
||||
|
|
|
@ -75,8 +75,6 @@ Map::Map(std::ostream &dout, IGameDef *gamedef):
|
|||
m_gamedef(gamedef),
|
||||
m_sector_cache(NULL)
|
||||
{
|
||||
/*m_sector_mutex.Init();
|
||||
assert(m_sector_mutex.IsInitialized());*/
|
||||
}
|
||||
|
||||
Map::~Map()
|
||||
|
|
|
@ -68,7 +68,6 @@ MapBlock::MapBlock(Map *parent, v3s16 pos, IGameDef *gamedef, bool dummy):
|
|||
reallocate();
|
||||
|
||||
#ifndef SERVER
|
||||
//mesh_mutex.Init();
|
||||
mesh = NULL;
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -38,7 +38,6 @@ class Profiler
|
|||
public:
|
||||
Profiler()
|
||||
{
|
||||
m_mutex.Init();
|
||||
}
|
||||
|
||||
void add(const std::string &name, float value)
|
||||
|
|
|
@ -55,7 +55,6 @@ static void makeMutex()
|
|||
{
|
||||
if(!g_mutex){
|
||||
g_mutex = new JMutex();
|
||||
g_mutex->Init();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -62,8 +62,6 @@ public:
|
|||
|
||||
ScriptApiBase::ScriptApiBase()
|
||||
{
|
||||
m_luastackmutex.Init();
|
||||
|
||||
#ifdef SCRIPTAPI_LOCK_DEBUG
|
||||
m_locked = false;
|
||||
#endif
|
||||
|
|
|
@ -36,8 +36,6 @@ AsyncEngine::AsyncEngine() :
|
|||
m_initDone(false),
|
||||
m_JobIdCounter(0)
|
||||
{
|
||||
assert(m_JobQueueMutex.Init() == 0);
|
||||
assert(m_ResultQueueMutex.Init() == 0);
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
|
|
@ -674,9 +674,6 @@ Server::Server(
|
|||
m_emergethread_trigger_timer = 0.0;
|
||||
m_savemap_timer = 0.0;
|
||||
|
||||
m_env_mutex.Init();
|
||||
m_con_mutex.Init();
|
||||
m_step_dtime_mutex.Init();
|
||||
m_step_dtime = 0.0;
|
||||
|
||||
if(path_world == "")
|
||||
|
|
|
@ -60,7 +60,6 @@ class Settings
|
|||
public:
|
||||
Settings()
|
||||
{
|
||||
m_mutex.Init();
|
||||
}
|
||||
|
||||
void writeLines(std::ostream &os)
|
||||
|
|
|
@ -373,8 +373,6 @@ ShaderSource::ShaderSource(IrrlichtDevice *device):
|
|||
|
||||
m_shader_callback = new ShaderCallback(this, "default");
|
||||
|
||||
m_shaderinfo_cache_mutex.Init();
|
||||
|
||||
m_main_thread = get_current_thread_id();
|
||||
|
||||
// Add a dummy ShaderInfo as the first index, named ""
|
||||
|
|
|
@ -433,8 +433,6 @@ TextureSource::TextureSource(IrrlichtDevice *device):
|
|||
{
|
||||
assert(m_device);
|
||||
|
||||
m_textureinfo_cache_mutex.Init();
|
||||
|
||||
m_main_thread = get_current_thread_id();
|
||||
|
||||
// Add a NULL TextureInfo as the first index, named ""
|
||||
|
|
|
@ -83,8 +83,6 @@ class MutexedMap
|
|||
public:
|
||||
MutexedMap()
|
||||
{
|
||||
m_mutex.Init();
|
||||
assert(m_mutex.IsInitialized());
|
||||
}
|
||||
|
||||
void set(const Key &name, const Value &value)
|
||||
|
@ -150,8 +148,6 @@ class MutexedIdGenerator
|
|||
public:
|
||||
MutexedIdGenerator()
|
||||
{
|
||||
m_mutex.Init();
|
||||
assert(m_mutex.IsInitialized());
|
||||
}
|
||||
|
||||
// Returns true if found
|
||||
|
@ -253,7 +249,6 @@ class MutexedQueue
|
|||
public:
|
||||
MutexedQueue()
|
||||
{
|
||||
m_mutex.Init();
|
||||
}
|
||||
bool empty()
|
||||
{
|
||||
|
|
|
@ -32,7 +32,6 @@ public:
|
|||
MutexedVariable(T value):
|
||||
m_value(value)
|
||||
{
|
||||
m_mutex.Init();
|
||||
}
|
||||
|
||||
T get()
|
||||
|
@ -75,7 +74,6 @@ public:
|
|||
JThread(),
|
||||
run(true)
|
||||
{
|
||||
run_mutex.Init();
|
||||
}
|
||||
|
||||
virtual ~SimpleThread()
|
||||
|
|
Loading…
Reference in New Issue