Isn't there a possibility of a race condition ? I've only briefly looked at your code, but it looks like it:
1. checks to see if a token is available,
2. if it is, it starts an ADC conversion
3. AND THEN increments the token counter.
What's to stop another instance also starting during step 2 ??