summaryrefslogtreecommitdiff
path: root/src/threading
diff options
context:
space:
mode:
authorShadowNinja <ShadowNinja@users.noreply.github.com>2017-06-11 03:43:05 -0400
committerLoïc Blot <nerzhul@users.noreply.github.com>2017-06-11 09:43:05 +0200
commit6c5e5e202394ce8063e3c2d9b663145bc4f8efce (patch)
tree2916ed7f7fc19c934fe5f614a9eeb1a282f13081 /src/threading
parent5cc8ad946efb3612eb6ea8655780b29fe4c62e19 (diff)
downloadminetest-6c5e5e202394ce8063e3c2d9b663145bc4f8efce.tar.gz
minetest-6c5e5e202394ce8063e3c2d9b663145bc4f8efce.tar.bz2
minetest-6c5e5e202394ce8063e3c2d9b663145bc4f8efce.zip
Remove threads.h and replace its definitions with their C++11 equivalents (#5957)
This also changes threadProc's signature, since C++11 supports arbitrary thread function signatures.
Diffstat (limited to 'src/threading')
-rw-r--r--src/threading/event.cpp1
-rw-r--r--src/threading/event.h3
-rw-r--r--src/threading/thread.cpp7
-rw-r--r--src/threading/thread.h20
4 files changed, 14 insertions, 17 deletions
diff --git a/src/threading/event.cpp b/src/threading/event.cpp
index 4e8d4bb3e..885e732c8 100644
--- a/src/threading/event.cpp
+++ b/src/threading/event.cpp
@@ -24,6 +24,7 @@ DEALINGS IN THE SOFTWARE.
*/
#include "threading/event.h"
+#include "threading/mutex_auto_lock.h"
void Event::wait()
{
diff --git a/src/threading/event.h b/src/threading/event.h
index 458864c82..af91d04c7 100644
--- a/src/threading/event.h
+++ b/src/threading/event.h
@@ -26,10 +26,7 @@ DEALINGS IN THE SOFTWARE.
#ifndef THREADING_EVENT_H
#define THREADING_EVENT_H
-#include "threads.h"
-
#include <condition_variable>
-#include "threading/mutex_auto_lock.h"
/** A syncronization primitive that will wake up one waiting thread when signaled.
* Calling @c signal() multiple times before a waiting thread has had a chance
diff --git a/src/threading/thread.cpp b/src/threading/thread.cpp
index e566824f7..cc4d65656 100644
--- a/src/threading/thread.cpp
+++ b/src/threading/thread.cpp
@@ -180,10 +180,8 @@ bool Thread::getReturnValue(void **ret)
}
-void *Thread::threadProc(void *param)
+void Thread::threadProc(Thread *thr)
{
- Thread *thr = (Thread *)param;
-
#ifdef _AIX
thr->m_kernel_thread_id = thread_self();
#endif
@@ -201,9 +199,6 @@ void *Thread::threadProc(void *param)
thr->m_running = false;
g_logger.deregisterThread();
-
- // 0 is returned here to avoid an unnecessary ifdef clause
- return 0;
}
diff --git a/src/threading/thread.h b/src/threading/thread.h
index 6292d9ed7..284c8e46c 100644
--- a/src/threading/thread.h
+++ b/src/threading/thread.h
@@ -26,10 +26,10 @@ DEALINGS IN THE SOFTWARE.
#pragma once
#include "util/basic_macros.h"
-#include "threads.h"
#include <string>
#include <atomic>
+#include <thread>
#include <mutex>
#ifdef _AIX
@@ -49,10 +49,12 @@ DEALINGS IN THE SOFTWARE.
#endif
+
class Thread {
public:
Thread(const std::string &name="");
virtual ~Thread();
+ DISABLE_CLASS_COPY(Thread)
/*
* Begins execution of a new thread at the pure virtual method Thread::run().
@@ -87,13 +89,12 @@ public:
/*
* Returns true if the calling thread is this Thread object.
*/
- bool isCurrentThread() { return thr_is_current_thread(getThreadId()); }
+ bool isCurrentThread() { return std::this_thread::get_id() == getThreadId(); }
- inline bool isRunning() { return m_running; }
- inline bool stopRequested() { return m_request_stop; }
+ bool isRunning() { return m_running; }
+ bool stopRequested() { return m_request_stop; }
- inline threadid_t getThreadId() { return m_thread_obj->get_id(); }
- inline threadhandle_t getThreadHandle() { return m_thread_obj->native_handle(); }
+ std::thread::id getThreadId() { return m_thread_obj->get_id(); }
/*
* Gets the thread return value.
@@ -139,6 +140,11 @@ protected:
virtual void *run() = 0;
private:
+ std::thread::native_handle_type getThreadHandle()
+ { return m_thread_obj->native_handle(); }
+
+ static void threadProc(Thread *thr);
+
void *m_retval;
bool m_joinable;
std::atomic<bool> m_request_stop;
@@ -148,13 +154,11 @@ private:
std::thread *m_thread_obj;
- static ThreadStartFunc threadProc;
#ifdef _AIX
// For AIX, there does not exist any mapping from pthread_t to tid_t
// available to us, so we maintain one ourselves. This is set on thread start.
tid_t m_kernel_thread_id;
#endif
- Thread(const Thread &) = delete;
};