Commit 6caa3d95 authored by Mark McDuff's avatar Mark McDuff Committed by facebook-github-bot-9

use thread_local instead of ThreadLocal for some statics in Random

Summary: Exit synchronization is the worst!  The worst!

Reviewed By: @​bmaurer

Differential Revision: D2253073
parent 2baf3f69
......@@ -108,18 +108,13 @@ void BufferedRandomDevice::getSlow(unsigned char* data, size_t size) {
ptr_ += size;
}
} // namespace
void Random::secureRandom(void* data, size_t size) {
static ThreadLocal<BufferedRandomDevice> bufferedRandomDevice;
bufferedRandomDevice->get(data, size);
static thread_local BufferedRandomDevice bufferedRandomDevice;
bufferedRandomDevice.get(data, size);
}
ThreadLocalPRNG::ThreadLocalPRNG() {
static folly::ThreadLocal<ThreadLocalPRNG::LocalInstancePRNG> localInstance;
local_ = localInstance.get();
}
class ThreadLocalPRNG::LocalInstancePRNG {
public:
......@@ -128,6 +123,11 @@ class ThreadLocalPRNG::LocalInstancePRNG {
Random::DefaultGenerator rng;
};
ThreadLocalPRNG::ThreadLocalPRNG() {
static thread_local ThreadLocalPRNG::LocalInstancePRNG localInstance;
local_ = &localInstance;
}
uint32_t ThreadLocalPRNG::getImpl(LocalInstancePRNG* local) {
return local->rng();
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment