mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-18 17:39:04 +00:00
Improve the Win32 reader-writer lock implementation by making it just a normal
lock. This is obviously bad, but at least it's threadsafe! If you know how to improve this in a pre-Vista friendly well, patches welcome! Patch by Max Burke. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73607 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8189d40a8d
commit
c9f8e8ebab
@ -18,31 +18,39 @@
|
||||
|
||||
#include "Win32.h"
|
||||
|
||||
// FIXME: THIS IS NOT THREAD-SAFE!!
|
||||
// Windows does not have reader-writer locks pre-Vista. If you want to have
|
||||
// thread-safe LLVM on Windows, for now at least, you need to use a pthreads
|
||||
// replacement library.
|
||||
// FIXME: Windows does not have reader-writer locks pre-Vista. If you want
|
||||
// real reader-writer locks, you a pthreads implementation for Windows.
|
||||
|
||||
namespace llvm {
|
||||
using namespace sys;
|
||||
|
||||
RWMutex::RWMutex() { }
|
||||
RWMutex::RWMutex() {
|
||||
data_ = calloc(1, sizeof(CRITICAL_SECTION));
|
||||
InitializeCriticalSection(static_cast<LPCRITICAL_SECTION>(data_));
|
||||
}
|
||||
|
||||
RWMutex::~RWMutex() { }
|
||||
RWMutex::~RWMutex() {
|
||||
DeleteCriticalSection(static_cast<LPCRITICAL_SECTION>(data_));
|
||||
free(data_);
|
||||
}
|
||||
|
||||
bool RWMutex::reader_acquire() {
|
||||
EnterCriticalSection(static_cast<LPCRITICAL_SECTION>(data_));
|
||||
return true;
|
||||
}
|
||||
|
||||
bool RWMutex::reader_release() {
|
||||
LeaveCriticalSection(static_cast<LPCRITICAL_SECTION>(data_));
|
||||
return true;
|
||||
}
|
||||
|
||||
bool RWMutex::writer_acquire() {
|
||||
EnterCriticalSection(static_cast<LPCRITICAL_SECTION>(data_));
|
||||
return true;
|
||||
}
|
||||
|
||||
bool RWMutex::writer_release() {
|
||||
LeaveCriticalSection(static_cast<LPCRITICAL_SECTION>(data_));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user