Да, UP и DOWN в основном полезны при вызове из разных потоков, но не исключено, что вы вызываете их из одного потока - если вы запускаете семафор со значением>0, то один и тот же поток может войти в критическую секцию и выполнить как DOWN (до), так и UP (после).Значение, которое инициализирует семафор, указывает, сколько потоков может одновременно войти в критическую секцию, которая может быть 1 (мьютекс) или любым другим положительным числом.
Как создаются потоки?Это не показано на слайде лекции, потому что это только принцип работы семафора с использованием псевдокода.Но это совсем другая история, как вы используете эти семафоры в своем приложении.