Professional multicore programming

Professional multicore programming : design and implementation for C++ developers / Cameron Hughes, Tracey Hughes, Wiley, 2008

Concurrent programming has become important for a greater proportion of all programmers since commodity PC’s went multicore. Good books on this have been in OPL for years (click on the 5-star tag to see some of them).  This book is useful because it gathers all the important topics into one place.  It starts with a good introduction, then outlines machine architecture for Intel, AMD, Sparc and Cell. Then it gets into programming structure for thread synchronization, with code examples in C++.  It has good reference information on Posix threads (pthreads).  It is intended for C++ programmers, but Java programmers will gain from reading it too. It is not the most readable book in the library.

Linux appliance design

Linux appliance design : a hands-on guide to building Linux appliances / by Bob Smith, No Starch Press, 2007

Here is a good practical introduction to designing appliances (DVRs, routers, any intelligent device) using Linux and open source tools. It discusses architecture then practical details with example code. The book is very readable, and the authors clearly have real experience.