You’re in luck, there are some detailed discussions about this issue -
One of the best ways I think of avoiding the undesired delay is to use the sync: opt of live_loop. Ie:
live_loop :bar, sync: :a do
...
That way, your loop will sync before it’s about to start, and from then on, just plays without syncing further. There is a small gotcha though: it will only sync on cues after they have happened - so while the two loops would be in time, it would effectively wait for one iteration of loop :a before starting loop :bar.
(There are various comments in the second thread mentioned above about minimising this ‘side-effect’ - and also a very helpful diagram about halfway down that I think explains the two approaches to syncing threads well).
Feel free to have a read through those threads and ask us any further questions you might still have.