From fa57ce4cd12082e92f4da59c93b2f711f7e36ecd Mon Sep 17 00:00:00 2001 From: Machiavelli Date: Sat, 15 May 2010 14:58:16 +0200 Subject: Reimplement ACE_Based::LockedQueue as SQL holder for the SqlTransaction class, since std::queue is not safe when multiple threads are reading/writing to it at the same time (SqlDelayThread and a MapUpdate Thread). Original patch by thenecromancer, was removed for ungrounded reasons. Thanks to Zor for the insight. Please give feedback on how this affects mtmaps usage. --HG-- branch : trunk --- src/shared/Database/SqlOperations.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/shared/Database/SqlOperations.h') diff --git a/src/shared/Database/SqlOperations.h b/src/shared/Database/SqlOperations.h index 0a54af70ffb..dcdada9cb59 100644 --- a/src/shared/Database/SqlOperations.h +++ b/src/shared/Database/SqlOperations.h @@ -57,11 +57,12 @@ class SqlStatement : public SqlOperation class SqlTransaction : public SqlOperation { + typedef ACE_Based::LockedQueue LockedQueue; private: - std::queue m_queue; + LockedQueue m_queue; public: SqlTransaction() {} - void DelayExecute(const char *sql) { m_queue.push(strdup(sql)); } + void DelayExecute(const char *sql) { m_queue.add(strdup(sql)); } void Execute(Database *db); }; -- cgit v1.2.3