программистсткое - Concurrent Programming Patterns Долгое время у меня уже присутствует ощущение, что, хотя я и могу решить ту или иную задачу синхронизации, делаю это как-то вымученно, и без четкого ощущения, что "могу всё" или "могу не всё, но очень много". Иной раз правильное, "канонически" выглядящее решение задачи, про которое понимаешь, что "вот так всё и надо было делать" приходит довольно поздно, иногда вообще не приходит. Порой обнажаются гигантские области собственного незнания, о которых и представления не имел. В общем, всё выглядит примерно как у программиста, которого научили писать программу максимум из 10 строк, а потом выпустили в свет.
Давно хотелось уже найти книгу вроде "Reusable Patterns of Multithread Programming" или "Semaphore Cookbook". И вот, кажется, что-то подобного рода обнаружено.
"The Little Book of Semaphores." Copyright 2005 Allen B. Downey
качать здесьВ предисловии автор один к одному говорит о том, что наболело у меня:
Most undergraduate Operating Systems textbooks have a module on Synchronization,
which usually presents a set of primitives (mutexes, semaphores, monitors,
and sometimes condition variables), and classical problems like readerswriters
and producers-consumers.
When I took the Operating Systems class at Berkeley, and taught it at Colby
College, I got the impression that most students were able to understand the
solutions to these problems, but few would have been able to produce them, or
solve similar problems.via wikipedia.org