Puzzling output of the time command
Real time is sometimes called wall-clock time. It is the time elapsed during the execution of the program. User time can be many times real time if the code is multithreaded as it sounds like your code is. Yes, it is basically adding up the user time for the threads; similar reasoning applies to system time.