Каким образом сторонний API "не безопасен для потоков"? Обычно означает, что вы можете вызывать его только из одного потока для процесса - но вы можете вызывать его из нескольких разных процессов одновременно, если только они не будут обращаться к одному общему ресурсу .
Если бы вы могли рассказать нам больше об API, это помогло бы ...
РЕДАКТИРОВАТЬ: Хорошо, поскольку он использует один общий ресурс, вы можете подумать о создании сервера, к которому подключаются все остальные, и который является единственным компьютером для использования этого стороннего API. Это может включать очередь сообщений для запросов или, возможно, просто обычный веб-сервис. Очевидно, что это будет единственная точка отказа и узкое место в системе - если вы можете найти какой-либо способ избежать единого общего ресурса, это было бы предпочтительнее.
Потенциально можно избежать того, чтобы это была единственная точка отказа, если бы несколько машин «пытались» быть этим мастером, например удерживая блокировку базы данных. Конечно, это возвращает вас к исходному вопросу о разделяемой блокировке, но это означает, что вы не пытаетесь получить эту блокировку для каждой из сторонних операций API - просто для привилегии быть «активным мастером».