Ag has one main thread and n workers. To have one thread per core, we want (num_cores - 1) workers. Unless of course we only have one core, in which case have at least one worker. Also this stops idiots from trying to specify negative workers.