Fixed thread-safety
Fixed huge mistake in Clock code (Allocating a mutex everytime instead of locking it) HashDigest and StringStream class are no longer thread-safe (That was stupid anyway) Former-commit-id: d07a6859df27eac2c5171e75720b3963b6a5fbbb
This commit is contained in:
parent
ef9592a0fd
commit
42c10268d2
|
|
@ -61,10 +61,8 @@
|
|||
#define NAZARA_THREADSAFETY_DIRECTORY 1 // NzDirectory
|
||||
#define NAZARA_THREADSAFETY_DYNLIB 1 // NzDynLib
|
||||
#define NAZARA_THREADSAFETY_FILE 1 // NzFile
|
||||
#define NAZARA_THREADSAFETY_HASHDIGEST 0 // NzHashDigest
|
||||
#define NAZARA_THREADSAFETY_LOG 1 // NzLog
|
||||
#define NAZARA_THREADSAFETY_RESOURCE 1 // NzResource
|
||||
#define NAZARA_THREADSAFETY_STRINGSTREAM 0 // NzStringStream
|
||||
|
||||
// Le nombre de spinlocks à utiliser avec les critical sections de Windows (0 pour désactiver)
|
||||
#define NAZARA_CORE_WINDOWS_CS_SPINLOCKS 4096
|
||||
|
|
|
|||
|
|
@ -20,9 +20,9 @@
|
|||
#endif
|
||||
|
||||
#if NAZARA_CORE_THREADSAFE && NAZARA_THREADSAFETY_DIRECTORY
|
||||
#include <Nazara/Core/ThreadSafety.hpp>
|
||||
#include <Nazara/Core/ThreadSafety.hpp>
|
||||
#else
|
||||
#include <Nazara/Core/ThreadSafetyOff.hpp>
|
||||
#include <Nazara/Core/ThreadSafetyOff.hpp>
|
||||
#endif
|
||||
|
||||
class NzDirectoryImpl;
|
||||
|
|
|
|||
|
|
@ -22,9 +22,9 @@
|
|||
#endif
|
||||
|
||||
#if NAZARA_CORE_THREADSAFE && NAZARA_THREADSAFETY_DYNLIB
|
||||
#include <Nazara/Core/ThreadSafety.hpp>
|
||||
#include <Nazara/Core/ThreadSafety.hpp>
|
||||
#else
|
||||
#include <Nazara/Core/ThreadSafetyOff.hpp>
|
||||
#include <Nazara/Core/ThreadSafetyOff.hpp>
|
||||
#endif
|
||||
|
||||
using NzDynLibFunc = int (*)(); // Type "générique" de pointeur sur fonction
|
||||
|
|
|
|||
|
|
@ -18,9 +18,9 @@
|
|||
#include <Nazara/Core/String.hpp>
|
||||
|
||||
#if NAZARA_CORE_THREADSAFE && NAZARA_THREADSAFETY_FILE
|
||||
#include <Nazara/Core/ThreadSafety.hpp>
|
||||
#include <Nazara/Core/ThreadSafety.hpp>
|
||||
#else
|
||||
#include <Nazara/Core/ThreadSafetyOff.hpp>
|
||||
#include <Nazara/Core/ThreadSafetyOff.hpp>
|
||||
#endif
|
||||
|
||||
class NzFileImpl;
|
||||
|
|
|
|||
|
|
@ -13,15 +13,15 @@
|
|||
#include <Nazara/Core/String.hpp>
|
||||
|
||||
#if NAZARA_CORE_THREADSAFE && NAZARA_THREADSAFETY_LOG
|
||||
#include <Nazara/Core/ThreadSafety.hpp>
|
||||
#include <Nazara/Core/ThreadSafety.hpp>
|
||||
#else
|
||||
#include <Nazara/Core/ThreadSafetyOff.hpp>
|
||||
#include <Nazara/Core/ThreadSafetyOff.hpp>
|
||||
#endif
|
||||
|
||||
#ifdef NAZARA_DEBUG
|
||||
#define NazaraDebug(txt) NazaraNotice(txt)
|
||||
#define NazaraDebug(txt) NazaraNotice(txt)
|
||||
#else
|
||||
#define NazaraDebug(txt)
|
||||
#define NazaraDebug(txt)
|
||||
#endif
|
||||
|
||||
#define NazaraLog NzLog::Instance()
|
||||
|
|
|
|||
|
|
@ -12,9 +12,9 @@
|
|||
#include <unordered_map>
|
||||
|
||||
#if NAZARA_CORE_THREADSAFE && NAZARA_THREADSAFETY_RESOURCE
|
||||
#include <Nazara/Core/ThreadSafety.hpp>
|
||||
#include <Nazara/Core/ThreadSafety.hpp>
|
||||
#else
|
||||
#include <Nazara/Core/ThreadSafetyOff.hpp>
|
||||
#include <Nazara/Core/ThreadSafetyOff.hpp>
|
||||
#endif
|
||||
|
||||
class NzResourceListener;
|
||||
|
|
|
|||
|
|
@ -12,12 +12,6 @@
|
|||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#if NAZARA_CORE_THREADSAFE && NAZARA_THREADSAFETY_STRINGSTREAM
|
||||
#include <Nazara/Core/ThreadSafety.hpp>
|
||||
#else
|
||||
#include <Nazara/Core/ThreadSafetyOff.hpp>
|
||||
#endif
|
||||
|
||||
class NAZARA_API NzStringStream
|
||||
{
|
||||
public:
|
||||
|
|
@ -48,8 +42,6 @@ class NAZARA_API NzStringStream
|
|||
operator NzString() const;
|
||||
|
||||
private:
|
||||
NazaraMutexAttrib(m_mutex, mutable)
|
||||
|
||||
std::vector<NzString> m_strings;
|
||||
unsigned int m_bufferSize;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -13,6 +13,12 @@
|
|||
#error OS not handled
|
||||
#endif
|
||||
|
||||
#if NAZARA_CORE_THREADSAFE && NAZARA_THREADSAFETY_CLOCK
|
||||
#include <Nazara/Core/ThreadSafety.hpp>
|
||||
#else
|
||||
#include <Nazara/Core/ThreadSafetyOff.hpp>
|
||||
#endif
|
||||
|
||||
#include <Nazara/Core/Debug.hpp>
|
||||
|
||||
namespace
|
||||
|
|
@ -47,7 +53,7 @@ float NzClock::GetSeconds() const
|
|||
|
||||
nzUInt64 NzClock::GetMicroseconds() const
|
||||
{
|
||||
NazaraMutex(m_mutex);
|
||||
NazaraLock(m_mutex);
|
||||
|
||||
return m_elapsedTime + (NzGetMicroseconds()-m_refTime);
|
||||
}
|
||||
|
|
@ -59,14 +65,14 @@ nzUInt64 NzClock::GetMilliseconds() const
|
|||
|
||||
bool NzClock::IsPaused() const
|
||||
{
|
||||
NazaraMutex(m_mutex);
|
||||
NazaraLock(m_mutex);
|
||||
|
||||
return m_paused;
|
||||
}
|
||||
|
||||
void NzClock::Pause()
|
||||
{
|
||||
NazaraMutex(m_mutex);
|
||||
NazaraLock(m_mutex);
|
||||
|
||||
if (!m_paused)
|
||||
{
|
||||
|
|
@ -79,7 +85,7 @@ void NzClock::Pause()
|
|||
|
||||
void NzClock::Restart()
|
||||
{
|
||||
NazaraMutex(m_mutex);
|
||||
NazaraLock(m_mutex);
|
||||
|
||||
m_elapsedTime = 0;
|
||||
m_refTime = NzGetMicroseconds();
|
||||
|
|
@ -88,7 +94,7 @@ void NzClock::Restart()
|
|||
|
||||
void NzClock::Unpause()
|
||||
{
|
||||
NazaraMutex(m_mutex);
|
||||
NazaraLock(m_mutex);
|
||||
|
||||
if (m_paused)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -16,6 +16,12 @@
|
|||
#error OS not handled
|
||||
#endif
|
||||
|
||||
#if NAZARA_CORE_THREADSAFE && NAZARA_THREADSAFETY_DIRECTORY
|
||||
#include <Nazara/Core/ThreadSafety.hpp>
|
||||
#else
|
||||
#include <Nazara/Core/ThreadSafetyOff.hpp>
|
||||
#endif
|
||||
|
||||
#include <Nazara/Core/Debug.hpp>
|
||||
|
||||
namespace
|
||||
|
|
|
|||
|
|
@ -15,6 +15,12 @@
|
|||
#error No implementation for this platform
|
||||
#endif
|
||||
|
||||
#if NAZARA_CORE_THREADSAFE && NAZARA_THREADSAFETY_DYNLIB
|
||||
#include <Nazara/Core/ThreadSafety.hpp>
|
||||
#else
|
||||
#include <Nazara/Core/ThreadSafetyOff.hpp>
|
||||
#endif
|
||||
|
||||
#include <Nazara/Core/Debug.hpp>
|
||||
|
||||
NzDynLib::NzDynLib() :
|
||||
|
|
|
|||
|
|
@ -19,6 +19,12 @@
|
|||
#error OS not handled
|
||||
#endif
|
||||
|
||||
#if NAZARA_CORE_THREADSAFE && NAZARA_THREADSAFETY_FILE
|
||||
#include <Nazara/Core/ThreadSafety.hpp>
|
||||
#else
|
||||
#include <Nazara/Core/ThreadSafetyOff.hpp>
|
||||
#endif
|
||||
|
||||
#include <Nazara/Core/Debug.hpp>
|
||||
|
||||
NzFile::NzFile() :
|
||||
|
|
|
|||
|
|
@ -11,7 +11,13 @@
|
|||
#include <cstring>
|
||||
|
||||
#if NAZARA_CORE_DUPLICATE_LOG_TO_COUT
|
||||
#include <cstdio>
|
||||
#include <cstdio>
|
||||
#endif
|
||||
|
||||
#if NAZARA_CORE_THREADSAFE && NAZARA_THREADSAFETY_LOG
|
||||
#include <Nazara/Core/ThreadSafety.hpp>
|
||||
#else
|
||||
#include <Nazara/Core/ThreadSafetyOff.hpp>
|
||||
#endif
|
||||
|
||||
#include <Nazara/Core/Debug.hpp>
|
||||
|
|
@ -116,7 +122,7 @@ void NzLog::Write(const NzString& string)
|
|||
if (m_writeTime)
|
||||
{
|
||||
line.Reserve(23 + string.GetSize() + 1);
|
||||
line.Resize(23);
|
||||
line.Set(23, '\0'); // Buffer non-initialisé
|
||||
|
||||
time_t currentTime = std::time(nullptr);
|
||||
std::strftime(&line[0], 24, "%d/%m/%Y - %H:%M:%S: ", std::localtime(¤tTime));
|
||||
|
|
|
|||
|
|
@ -9,6 +9,13 @@
|
|||
#include <Nazara/Utility/StaticMesh.hpp>
|
||||
#include <Nazara/Utility/VertexDeclaration.hpp>
|
||||
#include <typeinfo>
|
||||
|
||||
#if NAZARA_CORE_THREADSAFE && NAZARA_THREADSAFETY_RESOURCE
|
||||
#include <Nazara/Core/ThreadSafety.hpp>
|
||||
#else
|
||||
#include <Nazara/Core/ThreadSafetyOff.hpp>
|
||||
#endif
|
||||
|
||||
#include <Nazara/Core/Debug.hpp>
|
||||
|
||||
NzResource::NzResource(bool persistent) :
|
||||
|
|
|
|||
|
|
@ -18,8 +18,6 @@ m_bufferSize(str.GetSize())
|
|||
|
||||
NzString NzStringStream::ToString() const
|
||||
{
|
||||
NazaraLock(m_mutex)
|
||||
|
||||
NzString string;
|
||||
string.Reserve(m_bufferSize);
|
||||
|
||||
|
|
@ -31,8 +29,6 @@ NzString NzStringStream::ToString() const
|
|||
|
||||
NzStringStream& NzStringStream::operator<<(bool boolean)
|
||||
{
|
||||
NazaraLock(m_mutex)
|
||||
|
||||
m_strings.push_back(NzString::Boolean(boolean));
|
||||
m_bufferSize += m_strings.back().GetSize();
|
||||
|
||||
|
|
@ -41,8 +37,6 @@ NzStringStream& NzStringStream::operator<<(bool boolean)
|
|||
|
||||
NzStringStream& NzStringStream::operator<<(short number)
|
||||
{
|
||||
NazaraLock(m_mutex)
|
||||
|
||||
m_strings.push_back(NzString::Number(number));
|
||||
m_bufferSize += m_strings.back().GetSize();
|
||||
|
||||
|
|
@ -51,8 +45,6 @@ NzStringStream& NzStringStream::operator<<(short number)
|
|||
|
||||
NzStringStream& NzStringStream::operator<<(unsigned short number)
|
||||
{
|
||||
NazaraLock(m_mutex)
|
||||
|
||||
m_strings.push_back(NzString::Number(number));
|
||||
m_bufferSize += m_strings.back().GetSize();
|
||||
|
||||
|
|
@ -61,8 +53,6 @@ NzStringStream& NzStringStream::operator<<(unsigned short number)
|
|||
|
||||
NzStringStream& NzStringStream::operator<<(int number)
|
||||
{
|
||||
NazaraLock(m_mutex)
|
||||
|
||||
m_strings.push_back(NzString::Number(number));
|
||||
m_bufferSize += m_strings.back().GetSize();
|
||||
|
||||
|
|
@ -71,8 +61,6 @@ NzStringStream& NzStringStream::operator<<(int number)
|
|||
|
||||
NzStringStream& NzStringStream::operator<<(unsigned int number)
|
||||
{
|
||||
NazaraLock(m_mutex)
|
||||
|
||||
m_strings.push_back(NzString::Number(number));
|
||||
m_bufferSize += m_strings.back().GetSize();
|
||||
|
||||
|
|
@ -81,8 +69,6 @@ NzStringStream& NzStringStream::operator<<(unsigned int number)
|
|||
|
||||
NzStringStream& NzStringStream::operator<<(long number)
|
||||
{
|
||||
NazaraLock(m_mutex)
|
||||
|
||||
m_strings.push_back(NzString::Number(number));
|
||||
m_bufferSize += m_strings.back().GetSize();
|
||||
|
||||
|
|
@ -91,8 +77,6 @@ NzStringStream& NzStringStream::operator<<(long number)
|
|||
|
||||
NzStringStream& NzStringStream::operator<<(unsigned long number)
|
||||
{
|
||||
NazaraLock(m_mutex)
|
||||
|
||||
m_strings.push_back(NzString::Number(number));
|
||||
m_bufferSize += m_strings.back().GetSize();
|
||||
|
||||
|
|
@ -101,8 +85,6 @@ NzStringStream& NzStringStream::operator<<(unsigned long number)
|
|||
|
||||
NzStringStream& NzStringStream::operator<<(long long number)
|
||||
{
|
||||
NazaraLock(m_mutex)
|
||||
|
||||
m_strings.push_back(NzString::Number(number));
|
||||
m_bufferSize += m_strings.back().GetSize();
|
||||
|
||||
|
|
@ -111,8 +93,6 @@ NzStringStream& NzStringStream::operator<<(long long number)
|
|||
|
||||
NzStringStream& NzStringStream::operator<<(unsigned long long number)
|
||||
{
|
||||
NazaraLock(m_mutex)
|
||||
|
||||
m_strings.push_back(NzString::Number(number));
|
||||
m_bufferSize += m_strings.back().GetSize();
|
||||
|
||||
|
|
@ -121,8 +101,6 @@ NzStringStream& NzStringStream::operator<<(unsigned long long number)
|
|||
|
||||
NzStringStream& NzStringStream::operator<<(float number)
|
||||
{
|
||||
NazaraLock(m_mutex)
|
||||
|
||||
m_strings.push_back(NzString::Number(number));
|
||||
m_bufferSize += m_strings.back().GetSize();
|
||||
|
||||
|
|
@ -131,8 +109,6 @@ NzStringStream& NzStringStream::operator<<(float number)
|
|||
|
||||
NzStringStream& NzStringStream::operator<<(double number)
|
||||
{
|
||||
NazaraLock(m_mutex)
|
||||
|
||||
m_strings.push_back(NzString::Number(number));
|
||||
m_bufferSize += m_strings.back().GetSize();
|
||||
|
||||
|
|
@ -141,8 +117,6 @@ NzStringStream& NzStringStream::operator<<(double number)
|
|||
|
||||
NzStringStream& NzStringStream::operator<<(long double number)
|
||||
{
|
||||
NazaraLock(m_mutex)
|
||||
|
||||
m_strings.push_back(NzString::Number(number));
|
||||
m_bufferSize += m_strings.back().GetSize();
|
||||
|
||||
|
|
@ -151,8 +125,6 @@ NzStringStream& NzStringStream::operator<<(long double number)
|
|||
|
||||
NzStringStream& NzStringStream::operator<<(char character)
|
||||
{
|
||||
NazaraLock(m_mutex)
|
||||
|
||||
m_strings.push_back(NzString(character));
|
||||
m_bufferSize++;
|
||||
|
||||
|
|
@ -161,8 +133,6 @@ NzStringStream& NzStringStream::operator<<(char character)
|
|||
|
||||
NzStringStream& NzStringStream::operator<<(unsigned char character)
|
||||
{
|
||||
NazaraLock(m_mutex)
|
||||
|
||||
m_strings.push_back(NzString(static_cast<char>(character)));
|
||||
m_bufferSize++;
|
||||
|
||||
|
|
@ -171,8 +141,6 @@ NzStringStream& NzStringStream::operator<<(unsigned char character)
|
|||
|
||||
NzStringStream& NzStringStream::operator<<(const char* string)
|
||||
{
|
||||
NazaraLock(m_mutex)
|
||||
|
||||
m_strings.push_back(string);
|
||||
m_bufferSize += m_strings.back().GetSize();
|
||||
|
||||
|
|
@ -181,8 +149,6 @@ NzStringStream& NzStringStream::operator<<(const char* string)
|
|||
|
||||
NzStringStream& NzStringStream::operator<<(const std::string& string)
|
||||
{
|
||||
NazaraLock(m_mutex)
|
||||
|
||||
m_strings.push_back(string);
|
||||
m_bufferSize += string.size();
|
||||
|
||||
|
|
@ -191,8 +157,6 @@ NzStringStream& NzStringStream::operator<<(const std::string& string)
|
|||
|
||||
NzStringStream& NzStringStream::operator<<(const NzString& string)
|
||||
{
|
||||
NazaraLock(m_mutex)
|
||||
|
||||
m_strings.push_back(string);
|
||||
m_bufferSize += string.GetSize();
|
||||
|
||||
|
|
@ -201,8 +165,6 @@ NzStringStream& NzStringStream::operator<<(const NzString& string)
|
|||
|
||||
NzStringStream& NzStringStream::operator<<(const void* ptr)
|
||||
{
|
||||
NazaraLock(m_mutex)
|
||||
|
||||
m_strings.push_back(NzString::Pointer(ptr));
|
||||
m_bufferSize += sizeof(void*)*2;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue