nvzqz / RandomKit

Random data generation in Swift
https://nvzqz.github.io/RandomKit/docs/
Other
1.47k stars 91 forks source link

Strategy for getting threadLocal pointer in each thread #45

Open peheje opened 6 years ago

peheje commented 6 years ago

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 👍

peheje commented 6 years ago

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