mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-02-16 23:19:14 +01:00
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
This commit is contained in:
@@ -57,11 +57,12 @@ class SqlStatement : public SqlOperation
|
||||
|
||||
class SqlTransaction : public SqlOperation
|
||||
{
|
||||
typedef ACE_Based::LockedQueue<const char *, ACE_Thread_Mutex> LockedQueue;
|
||||
private:
|
||||
std::queue<const char *> 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);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user