Syncing time across Arduinos using NRF24l

Hi,

I want to have 6 Ardunios in "close" time synchronization.

So it will work by one ardunio being the "master" and x number of slaves. The slaves will monitor for events, and then report back to the master what event and when it happened.

Because there are multiple slaves I don't want the slave to send back immediately as the master may be "busy" doping some thing else. I want it to record the event and time stamp it with millis() and then send this back to the master so it can correlate events across the group.

I was intending to have the master poll the slaves once evey X seconds and send them its own current millis(), then the slave can use this as an offset to correct the millis() it sends back in its event log. So although the Arduinos are not actually in sync the time stamps are relative to the master will be.

I was thinking that the Master would send a packet with it's current millis(), this would interrupt the slave and its first action would be to note its own millis, calculate the off set and save it to a variable.

Does this seem a reasonable method to use or is there a better way to time stamp event with a central time reference acroos multiple arduinos. . I don't want to add extra hardware to the slaves (mini's) to keep weight and power minimum.

How close do the clocks need to be, 1 ms, 10 ms, 100 ms, 500 ms?

As above...
What is an "acceptable" tolerance?

Is there a reason the Serial Buffer could not be used to store information as it comes in whilst the arduino is "busy"?

Why is the arduino "busy"? Are you writing blocking code (like using delay())?