Семафоры могут быть выпущены или приобретены в любом порядке.Я бы порекомендовал вам просто освободить семафор, когда ваш поток начинает использовать ресурс, и получить его, когда закончите с ресурсом.
Это предполагает, что вам необходимо межпроцессное взаимодействие.Если вы не хотите, во что бы то ни стало используйте переменную-счетчик.
Могу я спросить, почему вы это делаете?