Synced threading changes between MySQLX and Sqlite

This commit is contained in:
David Anderson 2006-08-19 19:37:45 +00:00
parent db5c9c114e
commit 446d4b8a5d
2 changed files with 26 additions and 4 deletions

View File

@ -17,7 +17,7 @@ void ShutdownThreading()
{
if (g_pWorker)
{
g_pWorker->Stop(false);
g_pWorker->Stop(true);
delete g_pWorker;
g_pWorker = NULL;
}

View File

@ -263,6 +263,7 @@ void OnPluginsLoaded()
{
g_QueueLock = g_Threader.MakeMutex();
}
g_pWorker = new ThreadWorker(&g_Threader, 250);
if (!g_pWorker->Start())
{
@ -307,16 +308,37 @@ void StartFrame()
void OnPluginsUnloading()
{
if (!g_pWorker)
{
return;
}
g_pWorker->Stop(false);
delete g_pWorker;
g_pWorker = NULL;
g_QueueLock->Lock();
size_t remaining = g_ThreadQueue.size();
if (remaining)
{
MysqlThread *kmThread;
do
{
kmThread = g_ThreadQueue.front();
g_ThreadQueue.pop();
g_QueueLock->Unlock();
kmThread->Execute();
kmThread->Invalidate();
g_FreeThreads.push(kmThread);
g_QueueLock->Lock();
} while (!g_ThreadQueue.empty());
}
g_QueueLock->Unlock();
}
/***********************
* ATOMIC RESULT STUFF *
***********************/
* ATOMIC RESULT STUFF *
***********************/
AtomicResult::AtomicResult()
{
@ -418,7 +440,7 @@ const char *AtomicResult::GetRaw(unsigned int columnId, size_t *length)
const char *AtomicResult::GetStringSafe(unsigned int columnId)
{
const char *str = GetString(columnId);
return str ? str : "";
}