forked from somma/_MyLib
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathThreadManager.h
More file actions
73 lines (56 loc) · 1.88 KB
/
ThreadManager.h
File metadata and controls
73 lines (56 loc) · 1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/*-----------------------------------------------------------------------------
* ThreadManager.h
*-----------------------------------------------------------------------------
*
*-----------------------------------------------------------------------------
* All rights reserved by somma (fixbrain@gmail.com, unsorted@msn.com)
*-----------------------------------------------------------------------------
* - 2010.02.09 created
* - 2013.08-08 modified
* StatusCode.h 제거
* FreeAndNil() 함수 사용 안함
**---------------------------------------------------------------------------*/
#ifndef _dt_thread_manager_
#define _dt_thread_manager_
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#define CONTEXT_TERMINATED_EVENT_TIMEOUT 10 * 1000 // 10 sec
/*
* KillEvent 를 모니터링 하도록 프로시저를 작성하면 됨
*
DWORD __stdcall ThreadProcedure(IN LPVOID lpThreadParam)
{
_ASSERTE(NULL != lpThreadParam);
if (NULL == lpThreadParam) return 0;
PSOME_OBJECT so = (PSOME_OBJECT)lpThreadParam;
or
PDTTHREAD_CONTEXT pdc = (PDTTHREAD_CONTEXT) lpThreadParam;
while (TRUE)
{
if (WAIT_OBJECT_0 == WaitForSingleObject(so->pdc->KillEvent, 0))
or
if (WAIT_OBJECT_0 == WaitForSingleObject(pdc->KillEvent, 0))
{
break;
}
...... implementation .......
}
return 0;
}
*/
typedef struct _DTTHREAD_CONTEXT
{
HANDLE ThreadHandle;
HANDLE KillEvent;
DWORD ThreadId;
LPVOID ThreadParam;
LPTHREAD_START_ROUTINE ThreadProcedure;
} DTTHREAD_CONTEXT, *PDTTHREAD_CONTEXT;
PDTTHREAD_CONTEXT
CreateThreadContext(
IN LPTHREAD_START_ROUTINE ThreadProcedure,
IN LPVOID Threadparam
);
void
DestroyThreadContext(IN PDTTHREAD_CONTEXT& ctx);
#endif//_dt_thread_manager_