Warning: this is really more of an extended comment than an answer, primarily pointing to the fact that the question needs a lot of clarification before anybody can provide a really good answer.
I doubt there's any one book that's really (even close to) comprehensive. If there was, you'd need a forklift to move it. Books that cover even a fairly small subset of possibilities are still generally non-trivial.
I'd also note that you really seem to be conflating two rather separate issues: concurrency itself, and inter-task communication (whether the tasks happen to be implemented with threads, actors, processes, etc.) In some cases, one largely determines the other (e.g., an actor model generally specifies the forms of communication available) but in others that's much less true (e.g., most threading libraries support a fairly wide range of communication models).
It also seems to me that the answer(s) you're asking for are largely undecided at the present time. Quite a few people have formed opinions about things like threads vs. actors, but I don't think there's anything close to universal agreement about when to favor one over the other. Quite the contrary, I think it's pretty safe to say that this is an area where disagreement is currently the norm (at best, there might be some agreement at a rather vague level about the general sort of system that's likely to favor one or the other.
A great deal also depends on your real goals. If you want to implement something like a distributed operating system, chances are that a book on using some particular threading API will be of marginal use at best. Conversely, if you want to write a multithreaded application in Java, a book covering MESI vs. MOESI caching protocols will be at least equally remote from anything you care about.