Really it depends on your hardware. I usually use coretemp (hobbes), which directly reads my C2D cpu temps, eg currently 35/50 with the 2nd core disabled due to idleness so it doesn't update. Just tried smartbar which reports my CPU (maybe the sensor in the socket) as 27 while my MB is running at 246

Previously I used various temp monitoring programs depending on chipset, the last being XMBMon2.
Coretemp being open source could probably be adapted to read any modern CPU's temperature register and might currently work with newer Intel CPU's