History

add basic threadpool functions https://rbcommons.com/s/OpenH264/r/1294/

Sijia Chen committed 11 years ago

Commit 757a5961 parent af6a9a814 files · +1043 −4Browse files

Showing the changes to codec/common/src/WelsTaskThread.cpp (1 of 14 files). Show all

Unified · Split

codec/common/src/WelsTaskThread.cpp+89−0
@@ -0,0 +1,89 @@
1+/*!
2+ * \copy
3+ * Copyright (c) 2009-2015, Cisco Systems
4+ * All rights reserved.
5+ *
6+ * Redistribution and use in source and binary forms, with or without
7+ * modification, are permitted provided that the following conditions
8+ * are met:
9+ *
10+ * * Redistributions of source code must retain the above copyright
11+ * notice, this list of conditions and the following disclaimer.
12+ *
13+ * * Redistributions in binary form must reproduce the above copyright
14+ * notice, this list of conditions and the following disclaimer in
15+ * the documentation and/or other materials provided with the
16+ * distribution.
17+ *
18+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
21+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
22+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
23+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
28+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29+ * POSSIBILITY OF SUCH DAMAGE.
30+ *
31+ *
32+ * \file WelsTaskThread.cpp
33+ *
34+ * \brief functions for TaskThread
35+ *
36+ * \date 5/09/2012 Created
37+ *
38+ *************************************************************************************
39+ */
40+
41+
42+
43+#include "WelsTaskThread.h"
44+
45+namespace WelsCommon {
46+
47+CWelsTaskThread::CWelsTaskThread (IWelsTaskThreadSink* pSink) : m_pSink (pSink) {
48+ m_uiID = (uintptr_t) (this);
49+ m_pTask = NULL;
50+}
51+
52+
53+CWelsTaskThread::~CWelsTaskThread() {
54+}
55+
56+void CWelsTaskThread::ExecuteTask() {
57+ CWelsAutoLock cLock (m_cLockTask);
58+ if (m_pSink) {
59+ m_pSink->OnTaskStart (this, m_pTask);
60+ }
61+
62+ if (m_pTask) {
63+ m_pTask->Execute();
64+ }
65+
66+ if (m_pSink) {
67+ m_pSink->OnTaskStop (this, m_pTask);
68+ }
69+
70+ m_pTask = NULL;
71+}
72+
73+WELS_THREAD_ERROR_CODE CWelsTaskThread::SetTask (WelsCommon::IWelsTask* pTask) {
74+ CWelsAutoLock cLock (m_cLockTask);
75+
76+ if (!GetRunning()) {
77+ return WELS_THREAD_ERROR_GENERAL;
78+ }
79+
80+ m_pTask = pTask;
81+
82+ SignalThread();
83+
84+ return WELS_THREAD_ERROR_OK;
85+}
86+
87+
88+}
89+

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t