Lock (mutex) - один владелец; эксклюзивный доступ к ресурсу. Семафор - ограничение числа одновременных доступов (N слотов). Семафор для ограничения параллелизма (например, не более 5 одновременных запросов к API).