|
|
1.1 root 1: /*
2: Copyright (c) 2008 TrueCrypt Foundation. All rights reserved.
3:
4: Governed by the TrueCrypt License 2.4 the full text of which is contained
5: in the file License.txt included in TrueCrypt binary and source code
6: distribution packages.
7: */
8:
9: #ifndef TC_HEADER_Platform_Thread
10: #define TC_HEADER_Platform_Thread
11:
12: #ifdef TC_WINDOWS
13: # include "System.h"
14: # define TC_THREAD_PROC DWORD WINAPI
15: #else
16: # include <pthread.h>
17: # define TC_THREAD_PROC void*
18: #endif
19: #include "PlatformBase.h"
20: #include "Functor.h"
21: #include "SharedPtr.h"
22:
23: namespace TrueCrypt
24: {
25: class Thread
26: {
27: public:
28: #ifdef TC_WINDOWS
29: typedef LPTHREAD_START_ROUTINE ThreadProcPtr;
30: #else
31: typedef void* (*ThreadProcPtr) (void *);
32: #endif
33: Thread () { };
34: virtual ~Thread () { };
35:
36: void Start (ThreadProcPtr threadProc, void *parameter = nullptr);
37:
38: void Start (Functor *functor)
39: {
40: Start (Thread::FunctorEntry, (void *)functor);
41: }
42:
43: static void Sleep (uint32 milliSeconds);
44:
45: protected:
46: static TC_THREAD_PROC FunctorEntry (void *functorArg)
47: {
48: Functor *functor = (Functor *) functorArg;
49: try
50: {
51: (*functor) ();
52: }
53: catch (...) { }
54:
55: delete functor;
56: return 0;
57: }
58:
59: static const size_t MinThreadStackSize = 1024 * 1024;
60:
61: private:
62: Thread (const Thread &);
63: Thread &operator= (const Thread &);
64: };
65:
66: }
67:
68: #endif // TC_HEADER_Platform_Thread
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.