root/trunk/dep/include/sockets/Thread.h @ 2

Revision 2, 2.7 kB (checked in by yumileroy, 17 years ago)

[svn] * Proper SVN structure

Original author: Neo2003
Date: 2008-10-02 16:23:55-05:00

Line 
1/** \file Thread.h
2 **     \date  2004-10-30
3 **     \author grymse@alhem.net
4**/
5/*
6Copyright (C) 2004-2007  Anders Hedstrom
7
8This library is made available under the terms of the GNU GPL.
9
10If you would like to use this library in a closed-source application,
11a separate license agreement is available. For information about
12the closed-source license agreement for the C++ sockets library,
13please visit http://www.alhem.net/Sockets/license.html and/or
14email license@alhem.net.
15
16This program is free software; you can redistribute it and/or
17modify it under the terms of the GNU General Public License
18as published by the Free Software Foundation; either version 2
19of the License, or (at your option) any later version.
20
21This program is distributed in the hope that it will be useful,
22but WITHOUT ANY WARRANTY; without even the implied warranty of
23MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24GNU General Public License for more details.
25
26You should have received a copy of the GNU General Public License
27along with this program; if not, write to the Free Software
28Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
29*/
30#ifndef _SOCKETS_Thread_H
31#define _SOCKETS_Thread_H
32
33#include "sockets-config.h"
34#ifdef SOCKETS_NAMESPACE
35namespace SOCKETS_NAMESPACE {
36#endif
37
38#ifdef _WIN32
39// to be
40//typedef DWORD  threadfunc_t;
41//typedef LPVOID threadparam_t;
42//#define STDPREFIX WINAPI
43typedef unsigned threadfunc_t;
44typedef void * threadparam_t;
45#define STDPREFIX __stdcall
46#else
47#include <pthread.h>
48
49typedef void * threadfunc_t;
50typedef void * threadparam_t;
51#define STDPREFIX
52#endif
53
54/** \defgroup threading Threading */
55/** Thread base class.
56The Thread class is used by the resolver (ResolvServer) and running a detached socket (SocketThread).
57When you know some processing will take a long time and will freeze up a socket, there is always the
58possibility to call Detach() on that socket before starting the processing.
59When the OnDetached() callback is later called the processing can continue, now in its own thread.
60        \ingroup threading */
61class Thread
62{
63public:
64        Thread(bool release = true);
65        virtual ~Thread();
66
67        static threadfunc_t STDPREFIX StartThread(threadparam_t);
68
69        virtual void Run() = 0;
70
71        bool IsRunning();
72        void SetRunning(bool x);
73        bool IsReleased();
74        void SetRelease(bool x);
75        bool DeleteOnExit();
76        void SetDeleteOnExit(bool x = true);
77        bool IsDestructor();
78
79private:
80        Thread(const Thread& ) {}
81        Thread& operator=(const Thread& ) { return *this; }
82#ifdef _WIN32
83        HANDLE m_thread;
84        unsigned m_dwThreadId;
85#else
86        pthread_t m_thread;
87#endif
88        bool m_running;
89        bool m_release;
90        bool m_b_delete_on_exit;
91        bool m_b_destructor;
92};
93
94
95#ifdef SOCKETS_NAMESPACE
96}
97#endif
98
99#endif // _SOCKETS_Thread_H
100
Note: See TracBrowser for help on using the browser.