]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - src/threadengines/threadengine_win32.cpp
ThreadEngine: remove MutexFactory, mutexes should be constructed using their constructor
[user/henk/code/inspircd.git] / src / threadengines / threadengine_win32.cpp
1 /*       +------------------------------------+
2  *       | Inspire Internet Relay Chat Daemon |
3  *       +------------------------------------+
4  *
5  *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
6  * See: http://wiki.inspircd.org/Credits
7  *
8  * This program is free but copyrighted software; see
9  *          the file COPYING for details.
10  *
11  * ---------------------------------------------------
12  */
13
14 #include "inspircd.h"
15 #include "threadengines/threadengine_win32.h"
16
17 ThreadEngine::ThreadEngine(InspIRCd* Instance)
18 {
19 }
20
21 void ThreadEngine::Create(Thread* thread)
22 {
23         ThreadData* data = new ThreadData;
24         thread->state = data;
25
26         DWORD ThreadId = 0;
27         data->handle = CreateThread(NULL,0,ThreadEngine::Entry,thread,0,&ThreadId);
28
29         if (data->handle == NULL)
30         {
31                 thread->state = NULL;
32                 delete data;
33                 throw CoreException(std::string("Unable to create new thread: ") + dlerror());
34         }
35 }
36
37 ThreadEngine::~ThreadEngine()
38 {
39 }
40
41 DWORD WINAPI ThreadEngine::Entry(void* parameter)
42 {
43         Thread* pt = reinterpret_cast<Thread*>(parameter);
44         pt->Run();
45         return 0;
46 }
47
48 void ThreadData::FreeThread(Thread* thread)
49 {
50         thread->SetExitFlag();
51         WaitForSingleObject(handle,INFINITE);
52 }
53