Harmonic partial sum calculator with multithreading
Try not to use using namespace std in global scope.  If you must use it, keep it in local scope, such as in a function.  More info about that here.
I don't need any need to use printf() over std::cout here.  You are also using C-style casting and no std:: for clock_t, so some of this code still looks C-like.

If you're using printf() because you're having trouble with formatting, then take a look at the &lt;iomanip&gt; library for something useful.
Unless you're debugging, assert may be unnecessary.  You can easily output an error message to std::cerr and return EXIT_FAILURE from main().
The value 4 used in main() appears to be a magic number and should be a constant.
Each use of std::endl flushes the buffer and takes extra time. Luckily, you're not using it in the timed section.  It's still not needed in most cases and you can also output a newline with "\n", which doesn't do a flush as well.  More info about that here.