nvzqz/RandomKit

Strategy for getting threadLocal pointer in each thread

peheje opened this issue · 1 comments

From the docs:
"It's recommended to not call withThreadLocal(_:) or get the threadLocal pointer each individual time it's needed. Retrieving the thread-local instance incurs avoidable overhead."

That means right now I'm passing the:
let threadLocal = Xoroshiro.threadLocal

From the thread into my functions e.g.:
init(_ theadLocalRandom: UnsafeMutablePointer<Xoroshiro>) { ..

Is there a better way? Could RandomKit cache the UnsafeMutablePointer for each thread so that the application programmer didn't have to think about passing the thread owned pointer to each function called by the thread?

Thanks for the awesome repository and software 👍

I tried to use your ThreadLocal library. But I get worse performance than passing the UnsafeMutablePointer. https://www.dropbox.com/s/sc7v7afdlv9kt91/threadLocal.mov?dl=0