3 ** \author grymse@alhem.net
6 Copyright (C) 2004-2007 Anders Hedstrom
8 This library is made available under the terms of the GNU GPL.
10 If you would like to use this library in a closed-source application,
11 a separate license agreement is available. For information about
12 the closed-source license agreement for the C++ sockets library,
13 please visit http://www.alhem.net/Sockets/license.html and/or
14 email license@alhem.net.
16 This program is free software; you can redistribute it and/or
17 modify it under the terms of the GNU General Public License
18 as published by the Free Software Foundation; either version 2
19 of the License, or (at your option) any later version.
21 This program is distributed in the hope that it will be useful,
22 but WITHOUT ANY WARRANTY; without even the implied warranty of
23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 GNU General Public License for more details.
26 You should have received a copy of the GNU General Public License
27 along with this program; if not, write to the Free Software
28 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
30 #ifndef _SOCKETS_Thread_H
31 #define _SOCKETS_Thread_H
33 #include "sockets-config.h"
34 #ifdef SOCKETS_NAMESPACE
35 namespace SOCKETS_NAMESPACE
{
40 //typedef DWORD threadfunc_t;
41 //typedef LPVOID threadparam_t;
42 //#define STDPREFIX WINAPI
43 typedef unsigned threadfunc_t
;
44 typedef void * threadparam_t
;
45 #define STDPREFIX __stdcall
49 typedef void * threadfunc_t
;
50 typedef void * threadparam_t
;
54 /** \defgroup threading Threading */
55 /** Thread base class.
56 The Thread class is used by the resolver (ResolvServer) and running a detached socket (SocketThread).
57 When you know some processing will take a long time and will freeze up a socket, there is always the
58 possibility to call Detach() on that socket before starting the processing.
59 When the OnDetached() callback is later called the processing can continue, now in its own thread.
64 Thread(bool release
= true);
67 static threadfunc_t STDPREFIX
StartThread(threadparam_t
);
69 virtual void Run() = 0;
72 void SetRunning(bool x
);
74 void SetRelease(bool x
);
76 void SetDeleteOnExit(bool x
= true);
80 Thread(const Thread
& ) {}
81 Thread
& operator=(const Thread
& ) { return *this; }
84 unsigned m_dwThreadId
;
90 bool m_b_delete_on_exit
;
95 #ifdef SOCKETS_NAMESPACE
99 #endif // _SOCKETS_Thread_H