summaryrefslogtreecommitdiff
path: root/source/modules/asura-utils/threading/conditional.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-08-02 20:51:00 +0800
committerchai <chaifix@163.com>2019-08-02 20:51:00 +0800
commitbad78945ceba425f6a80e3b8dca2414d592970eb (patch)
tree8bf7540766349c534bf9e5746b24fd7507ba034e /source/modules/asura-utils/threading/conditional.cpp
parent99b90496765df21c5f377f42b9ed073ccb34c1fd (diff)
*修改文件名格式
Diffstat (limited to 'source/modules/asura-utils/threading/conditional.cpp')
-rw-r--r--source/modules/asura-utils/threading/conditional.cpp84
1 files changed, 0 insertions, 84 deletions
diff --git a/source/modules/asura-utils/threading/conditional.cpp b/source/modules/asura-utils/threading/conditional.cpp
deleted file mode 100644
index c4d32d9..0000000
--- a/source/modules/asura-utils/threading/conditional.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-#include "conditional.h"
-
-namespace_begin(AsuraEngine)
-namespace_begin(Threading)
-
-Conditional::Conditional()
- : m_Waiting(0)
- , m_Signals(0)
-{
-}
-
-Conditional::~Conditional()
-{
-}
-
-void Conditional::Signal()
-{
- m_Mutex.Lock();
- if (m_Waiting > m_Signals)
- {
- ++m_Signals;
- signal(m_WaitSem);
- m_Mutex.Unlock();
- wait(m_DoneSem);
- }
- else
- {
- m_Mutex.Unlock();
- }
-}
-
-void Conditional::Broadcast()
-{
- m_Mutex.Lock();
- if (m_Waiting> m_Signals) {
- int i, num_waiting;
-
- num_waiting = (m_Waiting - m_Signals);
- m_Signals = m_Waiting;
- for (i = 0; i < num_waiting; ++i) {
- signal(m_WaitSem);
- }
- m_Mutex.Unlock();
- for (i = 0; i < num_waiting; ++i) {
- wait(m_DoneSem);
- }
- }
- else {
- m_Mutex.Unlock();
- }
-
-}
-
-bool Conditional::Wait(Mutex* mutex, int timeout /*= ASURA_MUTEX_MAXWAIT*/)
-{
- bool retval;
-
- m_Mutex.Lock();
- ++m_Waiting;
- m_Mutex.Unlock();
-
- mutex->Unlock();
-
- retval = wait(m_WaitSem, timeout);
-
- m_Mutex.Lock();
- if (m_Signals > 0) {
- if (!retval) {
- wait(m_WaitSem);
- }
- signal(m_DoneSem);
-
- --m_Signals;
- }
- --m_Waiting;
- m_Mutex.Unlock();
-
- m_Mutex.Lock();
-
- return retval;
-}
-
-namespace_end
-namespace_end \ No newline at end of file