/*
- * Copyright 2014 Facebook, Inc.
+ * Copyright 2015 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include <type_traits>
#include <random>
#include <stdint.h>
-#include <folly/ThreadLocal.h>
+#include <folly/Portability.h>
-#if __GNUC_PREREQ(4, 8) && !defined(ANDROID)
+#if FOLLY_HAVE_EXTRANDOM_SFMT19937
#include <ext/random>
-#define FOLLY_USE_SIMD_PRNG 1
#endif
namespace folly {
}
friend class Random;
- ThreadLocalPRNG() {
- local_ = localInstance.get();
- if (!local_) {
- local_ = initLocal();
- }
- }
+ ThreadLocalPRNG();
private:
class LocalInstancePRNG;
- static LocalInstancePRNG* initLocal();
- static folly::ThreadLocalPtr<ThreadLocalPRNG::LocalInstancePRNG>
- localInstance;
static result_type getImpl(LocalInstancePRNG* local);
LocalInstancePRNG* local_;
public:
// Default generator type.
-#if FOLLY_USE_SIMD_PRNG
+#if FOLLY_HAVE_EXTRANDOM_SFMT19937
typedef __gnu_cxx::sfmt19937 DefaultGenerator;
#else
typedef std::mt19937 DefaultGenerator;