mirror of
https://github.com/llvm-mirror/libcxx.git
synced 2025-10-24 20:29:39 +08:00
Fix Windows try_lock implementation
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@292011 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -102,7 +102,7 @@ _LIBCPP_THREAD_ABI_VISIBILITY
|
|||||||
int __libcpp_recursive_mutex_lock(__libcpp_recursive_mutex_t *__m);
|
int __libcpp_recursive_mutex_lock(__libcpp_recursive_mutex_t *__m);
|
||||||
|
|
||||||
_LIBCPP_THREAD_ABI_VISIBILITY
|
_LIBCPP_THREAD_ABI_VISIBILITY
|
||||||
int __libcpp_recursive_mutex_trylock(__libcpp_recursive_mutex_t *__m);
|
bool __libcpp_recursive_mutex_trylock(__libcpp_recursive_mutex_t *__m);
|
||||||
|
|
||||||
_LIBCPP_THREAD_ABI_VISIBILITY
|
_LIBCPP_THREAD_ABI_VISIBILITY
|
||||||
int __libcpp_recursive_mutex_unlock(__libcpp_recursive_mutex_t *__m);
|
int __libcpp_recursive_mutex_unlock(__libcpp_recursive_mutex_t *__m);
|
||||||
@@ -114,7 +114,7 @@ _LIBCPP_THREAD_ABI_VISIBILITY
|
|||||||
int __libcpp_mutex_lock(__libcpp_mutex_t *__m);
|
int __libcpp_mutex_lock(__libcpp_mutex_t *__m);
|
||||||
|
|
||||||
_LIBCPP_THREAD_ABI_VISIBILITY
|
_LIBCPP_THREAD_ABI_VISIBILITY
|
||||||
int __libcpp_mutex_trylock(__libcpp_mutex_t *__m);
|
bool __libcpp_mutex_trylock(__libcpp_mutex_t *__m);
|
||||||
|
|
||||||
_LIBCPP_THREAD_ABI_VISIBILITY
|
_LIBCPP_THREAD_ABI_VISIBILITY
|
||||||
int __libcpp_mutex_unlock(__libcpp_mutex_t *__m);
|
int __libcpp_mutex_unlock(__libcpp_mutex_t *__m);
|
||||||
@@ -221,9 +221,9 @@ int __libcpp_recursive_mutex_lock(__libcpp_recursive_mutex_t *__m)
|
|||||||
return pthread_mutex_lock(__m);
|
return pthread_mutex_lock(__m);
|
||||||
}
|
}
|
||||||
|
|
||||||
int __libcpp_recursive_mutex_trylock(__libcpp_recursive_mutex_t *__m)
|
bool __libcpp_recursive_mutex_trylock(__libcpp_recursive_mutex_t *__m)
|
||||||
{
|
{
|
||||||
return pthread_mutex_trylock(__m);
|
return pthread_mutex_trylock(__m) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int __libcpp_recursive_mutex_unlock(__libcpp_mutex_t *__m)
|
int __libcpp_recursive_mutex_unlock(__libcpp_mutex_t *__m)
|
||||||
@@ -241,9 +241,9 @@ int __libcpp_mutex_lock(__libcpp_mutex_t *__m)
|
|||||||
return pthread_mutex_lock(__m);
|
return pthread_mutex_lock(__m);
|
||||||
}
|
}
|
||||||
|
|
||||||
int __libcpp_mutex_trylock(__libcpp_mutex_t *__m)
|
bool __libcpp_mutex_trylock(__libcpp_mutex_t *__m)
|
||||||
{
|
{
|
||||||
return pthread_mutex_trylock(__m);
|
return pthread_mutex_trylock(__m) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int __libcpp_mutex_unlock(__libcpp_mutex_t *__m)
|
int __libcpp_mutex_unlock(__libcpp_mutex_t *__m)
|
||||||
@@ -371,10 +371,9 @@ int __libcpp_recursive_mutex_lock(__libcpp_recursive_mutex_t *__m)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int __libcpp_recursive_mutex_trylock(__libcpp_recursive_mutex_t *__m)
|
bool __libcpp_recursive_mutex_trylock(__libcpp_recursive_mutex_t *__m)
|
||||||
{
|
{
|
||||||
TryEnterCriticalSection(__m);
|
return TryEnterCriticalSection(__m) != 0;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int __libcpp_recursive_mutex_unlock(__libcpp_recursive_mutex_t *__m)
|
int __libcpp_recursive_mutex_unlock(__libcpp_recursive_mutex_t *__m)
|
||||||
@@ -395,10 +394,9 @@ int __libcpp_mutex_lock(__libcpp_mutex_t *__m)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int __libcpp_mutex_trylock(__libcpp_mutex_t *__m)
|
bool __libcpp_mutex_trylock(__libcpp_mutex_t *__m)
|
||||||
{
|
{
|
||||||
TryAcquireSRWLockExclusive(__m);
|
return TryAcquireSRWLockExclusive(__m) != 0;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int __libcpp_mutex_unlock(__libcpp_mutex_t *__m)
|
int __libcpp_mutex_unlock(__libcpp_mutex_t *__m)
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ mutex::lock()
|
|||||||
bool
|
bool
|
||||||
mutex::try_lock() _NOEXCEPT
|
mutex::try_lock() _NOEXCEPT
|
||||||
{
|
{
|
||||||
return __libcpp_mutex_trylock(&__m_) == 0;
|
return __libcpp_mutex_trylock(&__m_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -83,7 +83,7 @@ recursive_mutex::unlock() _NOEXCEPT
|
|||||||
bool
|
bool
|
||||||
recursive_mutex::try_lock() _NOEXCEPT
|
recursive_mutex::try_lock() _NOEXCEPT
|
||||||
{
|
{
|
||||||
return __libcpp_recursive_mutex_trylock(&__m_) == 0;
|
return __libcpp_recursive_mutex_trylock(&__m_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// timed_mutex
|
// timed_mutex
|
||||||
|
|||||||
@@ -382,6 +382,9 @@ class Configuration(object):
|
|||||||
if '__cpp_structured_bindings' not in macros:
|
if '__cpp_structured_bindings' not in macros:
|
||||||
self.config.available_features.add('libcpp-no-structured-bindings')
|
self.config.available_features.add('libcpp-no-structured-bindings')
|
||||||
|
|
||||||
|
if self.is_windows:
|
||||||
|
self.config.available_features.add('windows')
|
||||||
|
|
||||||
def configure_compile_flags(self):
|
def configure_compile_flags(self):
|
||||||
no_default_flags = self.get_lit_bool('no_default_flags', False)
|
no_default_flags = self.get_lit_bool('no_default_flags', False)
|
||||||
if not no_default_flags:
|
if not no_default_flags:
|
||||||
|
|||||||
Reference in New Issue
Block a user