diff options
author | n0n4m3 <none@none> | 2010-02-07 08:22:31 +0300 |
---|---|---|
committer | n0n4m3 <none@none> | 2010-02-07 08:22:31 +0300 |
commit | 8676e5056f639c42256b0051d81286ee67af1d77 (patch) | |
tree | bd6dc47313eddd9030f7b6fdc033a99dfbb36d6f /src/shared/Database/SqlDelayThread.cpp | |
parent | bb7222c376785654ff3256e82fda28f4d8be7e98 (diff) |
Implement async class for database operations for better performance, remove 10ms sleep, fixed some crash on sql execute.
--HG--
branch : trunk
Diffstat (limited to 'src/shared/Database/SqlDelayThread.cpp')
-rw-r--r-- | src/shared/Database/SqlDelayThread.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/shared/Database/SqlDelayThread.cpp b/src/shared/Database/SqlDelayThread.cpp index 5b1c1a84b06..6efc9717345 100644 --- a/src/shared/Database/SqlDelayThread.cpp +++ b/src/shared/Database/SqlDelayThread.cpp @@ -32,15 +32,16 @@ void SqlDelayThread::run() mysql_thread_init(); #endif + // Lets wait for next async task no more than 2 secs + ACE_Time_Value _time(2); while (m_running) { // if the running state gets turned off while sleeping // empty the queue before exiting - ACE_Based::Thread::Sleep(10); - SqlOperation* s; - while (m_sqlQueue.next(s)) + SqlAsyncTask * s = (SqlAsyncTask*)m_sqlQueue.dequeue(/*&_time*/); + if(s) { - s->Execute(m_dbEngine); + s->call(); delete s; } } @@ -53,5 +54,11 @@ void SqlDelayThread::run() void SqlDelayThread::Stop() { m_running = false; + m_sqlQueue.queue()->deactivate(); } +bool SqlDelayThread::Delay(SqlOperation* sql) +{ + int res = m_sqlQueue.enqueue(new SqlAsyncTask(m_dbEngine, sql)); + return (res != -1); +} |