I think the problem in this case will be that there can be various ticks in the table, but the actual tick might fall inbetween those values. Then the earlier ticks would be skipped altogether. Let's say the ticks are 1000, 1010, 1030. Then when the scheduler gets called, the actual tick at that time is 1005. That means that the thread that is supposed to wake up at tick 1000 will be skipped and it will sleep forever.
I don't expect too many threads to be created, so I don't think this area would be a bottleneck. Also, the scheduler needs to enumerate through all threads anyway so it is pretty cheap to add an additional check in that loop to see whether the thread should be woken up.
I am thinking of ways to optimize this area at a later point, so I appreciate your suggestions.