Кто-нибудь знает достойный справочник по проблемам синхронизации в C ++? Я думаю о чем-то похожем на C ++ FAQ lite (и FQA lite), но в отношении параллелизма, блокировок, многопоточности, проблем производительности, рекомендаций, когда нужны блокировки, а когда нет, когда дело касается многопоточного библиотечного кода, который Вы не можете контролировать и т. д. Меня не волнуют внутренние проблемы того, как могут быть реализованы различные типы блокировок и т. д., я просто использую для этого надстройку.
Я уверен, что есть много хороших книг, я бы предпочел что-то (желательно онлайн), которое я могу использовать в качестве перехода, когда у меня в голове возникает вопрос или проблема. Я не новичок во всем этом, поэтому я хотел бы получить краткий справочник для всех тех различных типов ситуаций, которые могут появиться при написании многопоточных библиотек, использующих другие многопоточные библиотеки.
как:
Когда лучше иметь одну большую блокировку, защищающую группу данных, против группы более мелких блокировок, защищающих каждую часть данных? (Каковы затраты, связанные с наличием множества блокировок? Затраты на приобретение ресурсов? Затраты на производительность времени блокировки?)
Какое снижение производительности при вставке чего-либо в очередь и при наличии другого потока в очереди против обработки этих данных в исходном потоке?
Есть ли какие-то простые идиомы, чтобы убедиться, что вещи просто работают , когда вас не так беспокоит производительность?
В любом случае, я просто хочу знать, есть ли какие-нибудь приличные ссылки, которые люди используют.