From 12188e7a5dde4cdd4304b3e738b7905e55f3ad9a Mon Sep 17 00:00:00 2001 From: rubidium Date: Mon, 14 Apr 2008 19:54:33 +0000 Subject: (svn r12706) -Merge: the thread rewrite from NoAI. The rewrite makes the threading we have better extendable. --- src/thread_os2.cpp | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/thread_os2.cpp (limited to 'src/thread_os2.cpp') diff --git a/src/thread_os2.cpp b/src/thread_os2.cpp new file mode 100644 index 000000000..29b33557f --- /dev/null +++ b/src/thread_os2.cpp @@ -0,0 +1,80 @@ +/* $Id$ */ + +/** @file thread_os2.cpp OS2 implementation of Threads. */ + +#include "stdafx.h" +#include "thread.h" + +#if 0 +#include "debug.h" +#include "core/alloc_func.hpp" +#include + +#define INCL_DOS +#include +#include + +struct OTTDThread { + TID thread; + OTTDThreadFunc func; + void *arg; + void *ret; +}; + +static void Proxy(void *arg) +{ + OTTDThread *t = (OTTDThread *)arg; + t->ret = t->func(t->arg); +} + +OTTDThread *OTTDCreateThread(OTTDThreadFunc function, void *arg) +{ + OTTDThread *t = MallocT(1); + + t->func = function; + t->arg = arg; + t->thread = _beginthread(Proxy, NULL, 32768, t); + if (t->thread != (TID)-1) { + return t; + } else { + free(t); + return NULL; + } +} + +void *OTTDJoinThread(OTTDThread *t) +{ + if (t == NULL) return NULL; + + DosWaitThread(&t->thread, DCWW_WAIT); + void *ret = t->ret; + free(t); + return ret; +} + +void OTTDExitThread() +{ + _endthread(); +} + +#endif + +/* static */ ThreadObject *ThreadObject::New(OTTDThreadFunc proc, void *param) +{ + return NULL; +} + +/* static */ ThreadObject *ThreadObject::AttachCurrent() +{ + return NULL; +} + +/* static */ uint ThreadObject::CurrentId() +{ + return -1; +} + +/* static */ ThreadSemaphore *ThreadSemaphore::New() +{ + return NULL; +} -- cgit v1.2.3-54-g00ecf