The first one will resume the task the moment the Semaphore is given by someone, and then take it, the second will sample the semaphore every 10 ticks and take it if it available, but if it becomes available in the middle of the delay, it will wait till the end of the delay to check.
So to be clear, the first one checks to see if the semaphore is available immediately and then checks every tick for 10 more ticks after that (assuming the semaphore is not available), and the second one checks to see if the semaphore is available immedaitely and then only once more after waiting 10 ticks ? Is that right?
The first one check the semaphore immediately, and if it is not available, registers the task on the semaphore so that if another task gives the semaphore, it will immediately take it (unless another higher priority task is also waiting on it). It also sets a time to remove it from the wait after 10 ticks.