One of my friends built software to track use of the two washers and two dryers at our local dormcubator. It relied on students to report that they had started a cycle by email; so long as students did this then the website could tell you when the cycle ended because the machines had fairly consistent cycle times.
While he built a virtual queue into the website (type in your email address and we'll send you an email when the last load is done) it turns out that people are really bad at picking up their laundry right when the machine finishes...
Once a toilet becomes free, everybody waiting will try to aquire the ressource (ie: do a costly walk to the bathroom).
There must already be some gaming theory or performance modelling result that solves this issue, though.
Just a simple idea would be to add a random delay for propagating the information to different users.