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.

Programming interviews exposed

Programming interviews exposed : secrets to landing your next job / John Mongan, Noah Suojanen, Eric Giguère. Wiley Pub., 2007

If you work in technology, whether programming or similar, you probably need to look for new work now and then. This book is the best I have seen for advice on how to interview, negotiate pay, and prepare your resume. Useful to hiring managers too.

There is another way to approach this book.  More than half of the book is programming algorithms that you would learn in undergrad CS, and you can read it to refresh your knowledge.

Effective C++ : 55 specific ways

Effective C++ : 55 specific ways to improve your programs and designs / Scott Meyers, Addison-Wesley, 2005

Some very useful idioms in C++ are not obvious. For example, making a class non-copyable. Maybe you know of the idiom but don’t know the simplest or cleanest way to apply it. Maybe you have never encountered it. This book discusses some of the most useful ones.