1 //===----------------------- random_shuffle.cpp ---------------------------===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
11 #ifndef _LIBCPP_HAS_NO_THREADS
13 # if defined(__ELF__) && defined(_LIBCPP_LINK_PTHREAD_LIB)
14 # pragma comment(lib, "pthread")
18 _LIBCPP_BEGIN_NAMESPACE_STD
20 #ifndef _LIBCPP_HAS_NO_THREADS
21 _LIBCPP_SAFE_STATIC
static __libcpp_mutex_t __rs_mut
= _LIBCPP_MUTEX_INITIALIZER
;
23 unsigned __rs_default::__c_
= 0;
25 __rs_default::__rs_default()
27 #ifndef _LIBCPP_HAS_NO_THREADS
28 __libcpp_mutex_lock(&__rs_mut
);
33 __rs_default::__rs_default(const __rs_default
&)
38 __rs_default::~__rs_default()
40 #ifndef _LIBCPP_HAS_NO_THREADS
42 __libcpp_mutex_unlock(&__rs_mut
);
48 __rs_default::result_type
49 __rs_default::operator()()
51 static mt19937 __rs_g
;
58 return __rs_default();
61 _LIBCPP_END_NAMESPACE_STD