On 2019-04-05 16:28, Bruce Richardson wrote:
On Fri, Apr 05, 2019 at 03:51:39PM +0200, Mattias Rönnblom wrote:
On 2019-04-05 15:45, Mattias Rönnblom wrote:
The rte_rand() documentation left it unspecified if the rte_rand() was
multi-thread safe or not, and the implementation (based on lrand48())
was not.

This commit makes rte_rand() safe to use from any lcore thread by
using lrand48_r() and per-lcore random state structs. Besides the
obvious improvement in terms of correctness (for concurrent users),
this also much improves rte_rand() performance, since the threads no
longer shares state. For the single-threaded case, this patch causes
~10% rte_rand() performance degradation.


It's a little unclear to me, if lrand48_r() exists in FreeBSD or not. Could
someone confirm?

Nothing shows up for me in the man pages for such a function on FreeBSD 12,
so I suspect they aren't available.

Could arc4random(3) be a good replacement on FreeBSD? It "can be called in almost all coding environments, including pthreads(3)" according to the man page, so assume it's MT safe.

Reply via email to