This is actually still correct, and it's favored to use `sync::Semaphore` instead of `sync::raw::Semaphore`