Right now search is performed on just on core, the program seems to have just one flow of execution. It would be most beneficial if several threads are used when searching, calculating hashes, etc.
The clearer scenario that comes to my mind is searching through different volumes, say 2 or 3 in a system with 4 logical processors.