Эта задача из книги AI Swift Driven Development. Автор опрашивал несколько нейронок и считает, что Mutex подходит лучше всего.
Операция синхронная, состояние тривиальное. Mutex создан ровно под этот сценарий: короткая read-modify-write секция, которая завершается мгновенно. withLock { $0 += 1 } захватывает лок, выполняет замыкание, освобождает лок — без индирекции. Инкремент счётчика — это архетипичный пример, для которого лок и придуман.
У actor каждый вызов метода — это await, то есть потенциальная точка приостановки: хоп на executor актора, постановка задачи в очередь, планирование. На 2000 инкрементов — 2000 таких хопов. Mutex синхронный: нет suspension point, нет планировщика, нет async-контаминации вызывающего кода (await не расползается вверх по стеку вызовов). Для горячего счётчика это решающий фактор.
Ну все, 51% заменяет нейронка?
