diff --git a/Project1 b/Project1 deleted file mode 100755 index c286143..0000000 Binary files a/Project1 and /dev/null differ diff --git a/modernize/sockets.cpp b/modernize/sockets.cpp index cbcc83a..bcca62c 100755 --- a/modernize/sockets.cpp +++ b/modernize/sockets.cpp @@ -7,11 +7,15 @@ constexpr auto max_buffer = 1024; decltype(net::message_queue) net::message_queue{}; +auto inline mutex() -> std::recursive_mutex& +{ + static std::recursive_mutex mutex{}; //allows for multiple thread access to our recv. + return mutex; +} auto net::recv(const SOCKET socket) noexcept -> std::string { - static std::recursive_mutex mutex{}; //allows for multiple thread access to our recv. - std::unique_lock lock(mutex); + std::unique_lock lock(mutex()); try { auto& my_queue = message_queue[socket]; @@ -102,6 +106,7 @@ auto net::epilogue() noexcept -> void { WSACleanup(); } #else auto net::closesocket(const SOCKET socket) noexcept -> unsigned { + std::unique_lock lock(mutex()); message_queue.erase(socket); return close(socket); } diff --git a/project/server.h b/project/server.h index f69b8c4..edaceb8 100755 --- a/project/server.h +++ b/project/server.h @@ -12,7 +12,7 @@ class server : networked { auto client = networked(accept(socket, nullptr, nullptr)); client_connected.execute(client); -#ifdef THREADED +#ifndef THREADED std::thread(&server::accept_client_message, this, client).detach(); #else std::thread(&server::accept_client_message, this, client).join();