您的位置:首页 > 编程语言

UDT源码剖析(五):UDT::cleanup()过程代码注释

2012-09-19 17:19 501 查看
调用路线

UDT::cleanup()->CUDT::cleanup()->CUDTUnited::cleanup()

1
int
CUDTUnited::cleanup()
2
{
3
//
锁保护
4
CGuard
gcinit(m_InitLock);
5
6
//
如果还有实例运行,则到此为止了
7
if
(--m_iInstanceCount
> 0)
8
return
0;
9
10
//destroy
CTimer::EventLock
11
//
如果垃圾收集没有启动,则到此为止了
12
if
(!m_bGCStatus)
13
return
0;
14
15
//
标注状态为关闭中
16
m_bClosing
=
true
;
17
18
//
pthread_cond_signal及SetEvent,立即释放一个解锁信号
19
//
pthread_join及WaitForSingleObject,等待GC线程结束
20
//
清除相应的锁变量
21
#ifndef
WIN32
22
pthread_cond_signal(&m_GCStopCond);
23
pthread_join(m_GCThread,
NULL);
24
pthread_mutex_destroy(&m_GCStopLock);
25
pthread_cond_destroy(&m_GCStopCond);
26
#else
27
SetEvent(m_GCStopCond);
28
WaitForSingleObject(m_GCThread,
INFINITE);
29
CloseHandle(m_GCThread);
30
CloseHandle(m_GCStopLock);
31
CloseHandle(m_GCStopCond);
32
#endif
33
34
//
标识垃圾收集未运行
35
m_bGCStatus
=
false
;
36
37
//
Global destruction code
38
//
winsock的释放函数,与WSAStartup配对
39
#ifdef
WIN32
40
WSACleanup();
41
#endif
42
43
return
0;
44
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: