SemaphoreSlim dựa trên SpinWait và Monitor, do đó, luồng chờ lấy khóa sẽ đốt các chu kỳ CPU trong một thời gian với hy vọng có được khóa trước khi chuyển sang luồng khác. Nếu điều đó không xảy ra, thì các luồng cho phép hệ thống chuyển đổi ngữ cảnh và thử lại (bằng cách ghi một số chu kỳ CPU) sau khi hệ điều hành lên lịch cho luồng đó một lần nữa. Với thời gian chờ lâu, mô hình này có thể ghi qua một lượng đáng kể chu kỳ CPU. Vì vậy, trường hợp tốt nhất cho việc triển khai như vậy là khi hầu hết thời gian không có thời gian chờ đợi và bạn gần như có thể lấy được khóa ngay lập tức.
Semaphore dựa vào việc thực hiện trong nhân hệ điều hành, vì vậy mỗi khi bạn có được khóa, bạn tốn khá nhiều chu kỳ CPU, nhưng sau đó luồng chỉ ngủ trong khoảng thời gian cần thiết để lấy khóa.