From 1cf689a6ad9d6c5cd29e11a6a96cb075eb2bbbb8 Mon Sep 17 00:00:00 2001 From: Aki Date: Sun, 27 Mar 2022 22:11:07 +0200 Subject: Replaced ThreadSync with stl's mutex --- NetEx/HttpServletExec.cpp | 4 ++-- NetEx/NetLink.cpp | 31 ++++++++++++++++--------------- NetEx/NetLink.h | 5 +++-- NetEx/NetMsg.h | 1 - NetEx/NetPeer.cpp | 2 +- NetEx/NetPeer.h | 5 +++-- NetEx/NetServer.cpp | 12 ++++++------ NetEx/NetServer.h | 5 +++-- 8 files changed, 34 insertions(+), 31 deletions(-) (limited to 'NetEx') diff --git a/NetEx/HttpServletExec.cpp b/NetEx/HttpServletExec.cpp index 357a5f8..b8d92f7 100644 --- a/NetEx/HttpServletExec.cpp +++ b/NetEx/HttpServletExec.cpp @@ -200,7 +200,7 @@ DWORD HttpServletExec::CheckSessions() { while (!exec_shutdown) { - sync.acquire(); + sync.lock(); if (sessions.size()) { ListIter iter = sessions; @@ -216,7 +216,7 @@ HttpServletExec::CheckSessions() DoSyncedCheck(); - sync.release(); + sync.unlock(); Sleep(100); } diff --git a/NetEx/NetLink.cpp b/NetEx/NetLink.cpp index bbba59b..10e817a 100644 --- a/NetEx/NetLink.cpp +++ b/NetEx/NetLink.cpp @@ -87,9 +87,8 @@ NetLink::AddPeer(const NetAddr& a) if (!a.IPAddr()) return 0; - AutoThreadSync auto_sync(sync); - NetPeer* peer = FindPeer(a); + const std::lock_guard lock(sync); if (!peer) { peer = new NetPeer(a, base_netid++); @@ -149,9 +148,9 @@ NetLink::GetMessage(DWORD netid) if (p) { msg = p->GetMessage(); - sync.acquire(); + sync.lock(); recv_list.remove(msg); - sync.release(); + sync.unlock(); } } @@ -169,11 +168,11 @@ NetLink::GetMessage() // Double-checked locking: if (recv_list.size()) { - sync.acquire(); + sync.lock(); if (recv_list.size()) { msg = recv_list.removeIndex(0); } - sync.release(); + sync.unlock(); if (msg && msg->NetID()) { NetPeer* p = FindPeer(msg->NetID()); @@ -216,7 +215,7 @@ NetLink::DoSendRecv() SendPackets(); // discard reeeeally old peers: - sync.acquire(); + sync.lock(); ListIter iter = peer_list; while (!shutdown && ++iter) { @@ -226,7 +225,7 @@ NetLink::DoSendRecv() delete iter.removeItem(); } - sync.release(); + sync.unlock(); Sleep(traffic_time); } @@ -265,7 +264,7 @@ NetLink::SendPackets() DoRetries(); } - AutoThreadSync auto_sync(sync); + const std::lock_guard lock(sync); ListIter iter = peer_list; while (!shutdown && ++iter) { @@ -345,7 +344,7 @@ void NetLink::ProcessAck(NetGram* gram) { if (!shutdown && send_list.size()) { - AutoThreadSync auto_sync(sync); + sync.lock(); // remove the ack flag: gram->ClearAck(); @@ -361,7 +360,9 @@ NetLink::ProcessAck(NetGram* gram) if (lag_index >= 10) lag_index = 0; lag_samples[lag_index++] = msec; + sync.unlock(); NetPeer* peer = FindPeer(orig->Address()); + sync.lock(); if (peer) peer->SetLastReceiveTime(NetLayer::GetUTC()); @@ -374,6 +375,7 @@ NetLink::ProcessAck(NetGram* gram) else resend_time = 300; } + sync.unlock(); } } @@ -381,10 +383,9 @@ void NetLink::QueueNetGram(NetGram* gram) { if (!shutdown) { - AutoThreadSync auto_sync(sync); - DWORD sequence = 0; NetPeer* peer = FindPeer(gram->Address()); + const std::lock_guard lock(sync); if (peer) { sequence = peer->Sequence(); @@ -415,7 +416,7 @@ void NetLink::DoRetries() { if (!shutdown) { - AutoThreadSync auto_sync(sync); + const std::lock_guard lock(sync); if (send_list.size()) { int time = (int) NetLayer::GetTime(); @@ -452,7 +453,7 @@ NetLink::DoRetries() NetPeer* NetLink::FindPeer(DWORD netid) { - AutoThreadSync auto_sync(sync); + const std::lock_guard lock(sync); NetPeer* peer = 0; ListIter iter = peer_list; @@ -469,7 +470,7 @@ NetLink::FindPeer(DWORD netid) NetPeer* NetLink::FindPeer(const NetAddr& a) { - AutoThreadSync auto_sync(sync); + const std::lock_guard lock(sync); NetPeer* peer = 0; ListIter iter = peer_list; diff --git a/NetEx/NetLink.h b/NetEx/NetLink.h index c039fe7..33024f3 100644 --- a/NetEx/NetLink.h +++ b/NetEx/NetLink.h @@ -15,11 +15,12 @@ #ifndef NetLink_h #define NetLink_h +#include + #include #include "NetAddr.h" #include "NetSock.h" #include "List.h" -#include "ThreadSync.h" // +-------------------------------------------------------------------+ @@ -91,7 +92,7 @@ protected: HANDLE hnet; bool shutdown; - ThreadSync sync; + std::mutex sync; DWORD resend_time; DWORD traffic_time; diff --git a/NetEx/NetMsg.h b/NetEx/NetMsg.h index 4918c36..1a8585f 100644 --- a/NetEx/NetMsg.h +++ b/NetEx/NetMsg.h @@ -20,7 +20,6 @@ #include "NetGram.h" #include "NetSock.h" #include "List.h" -#include "ThreadSync.h" // +-------------------------------------------------------------------+ diff --git a/NetEx/NetPeer.cpp b/NetEx/NetPeer.cpp index a324f94..6adbe71 100644 --- a/NetEx/NetPeer.cpp +++ b/NetEx/NetPeer.cpp @@ -143,7 +143,7 @@ NetPeer::ComposeGram() NetGram* g = 0; if ((send_list.size() || multi_send_list.size()) && OKtoSend()) { - AutoThreadSync auto_sync(sync); + const std::lock_guard lock(sync); int xmit_size = send_size; int nmsg = send_list.size(); diff --git a/NetEx/NetPeer.h b/NetEx/NetPeer.h index 95bfb5c..3610f1b 100644 --- a/NetEx/NetPeer.h +++ b/NetEx/NetPeer.h @@ -15,10 +15,11 @@ #ifndef NetPeer_h #define NetPeer_h +#include + #include #include "NetAddr.h" #include "List.h" -#include "ThreadSync.h" // +-------------------------------------------------------------------+ @@ -90,7 +91,7 @@ private: List multi_send_list; List multi_recv_list; - ThreadSync sync; + std::mutex sync; }; diff --git a/NetEx/NetServer.cpp b/NetEx/NetServer.cpp index 7681aa1..665b69b 100644 --- a/NetEx/NetServer.cpp +++ b/NetEx/NetServer.cpp @@ -117,7 +117,7 @@ NetServer::Listener() NetSock* s = sock.accept(&client_addr); while (s) { - sync.acquire(); + sync.lock(); for (int i = 0; i < poolsize; i++) { if (conn[i] == 0) { @@ -128,7 +128,7 @@ NetServer::Listener() } } - sync.release(); + sync.unlock(); // wait for a thread to become not busy if (s) @@ -164,9 +164,9 @@ NetServer::Reader(int index) srand(timeGetTime()); while (!server_shutdown) { - sync.acquire(); + sync.lock(); NetSock* s = conn[index]; - sync.release(); + sync.unlock(); if (s) { const int MAX_REQUEST = 4096; @@ -202,10 +202,10 @@ NetServer::Reader(int index) } } - sync.acquire(); + sync.lock(); delete conn[index]; conn[index] = 0; - sync.release(); + sync.unlock(); } else { Sleep(5); diff --git a/NetEx/NetServer.h b/NetEx/NetServer.h index 94bff95..0869f2a 100644 --- a/NetEx/NetServer.h +++ b/NetEx/NetServer.h @@ -15,12 +15,13 @@ #ifndef NetServer_h #define NetServer_h +#include + #include #include "NetAddr.h" #include "NetGram.h" #include "NetSock.h" #include "List.h" -#include "ThreadSync.h" // +-------------------------------------------------------------------+ @@ -58,7 +59,7 @@ protected: int err; bool server_shutdown; - ThreadSync sync; + std::mutex sync; }; -- cgit v1.1