Hello,
there is always something we managed to not get in touch with... for me, it's threading and locks...
In one of my classes, I have a maxon::KdTree
. It is being rebuilt from time to time, depending on some factors. Then there are potentially multiple threads (from maxon::ParallelFor
) that want to access the KdTree to call its FindNearest()
and FindRange()
functions. These have to wait for the tree to be built, of course.
If I understand the concept of locks correctly, I would need to lock the KdTree while it is being rebuilt. But for the FindNearest()
and FindRange()
calls, I would need to wait for the KdTree being unlocked, but I would not need to lock it, as those functions are thread safe (if used right), is that correct? So, I looked at the Locks & Synchronization Manual, and I'm not sure which lock to use. It seems, maxon::Spinlock
is not what I'm looking for.
Thanks for any tips & help,
Frank