I want to read a good book about multithreading and parallelism. I have a primarily .NET background but I think I would prefer a book focused on first principles and working into general patterns and algorithms and being overall less technology specific.
Obviously a discussion of the kind of low-level system architecture issues that the C# "volatile" keyword attempts to address (for example) would be important, just without being tied directly to a particular language.
Is there a particular book in this field that stands out among the others?
Thanks,