Are you working on a *nix / BSD platform? If so, there should be a "virtual alarm" signal called VTALRM (SIGVTALRM), implemented at the operating system level, designed to solve the limitation of one alarm per process. There can be multiple VTALRM signals pending for a single process.
which has Virtual Timer/Alarm support, and it should work on Windows platforms too I believe.