The POSIX approach to stopping a thread is pthread_cancel(), not pthread_kill(). Don't forget to set PTHREAD_CANCEL_ASYNCHRONOUS (it is DEFERRED by default.
If you can modify pThread_func() and you can wait for computing() to return normally from one iteration, then go with what kbw is suggesting.
If you cannot wait for computing(), then cancel. Signals aren't relevant: if your thread is inside some function, a signal handler cannot change that flow of execution. (Except on those platforms where it's possible to throw an exception from a signal handler, but that's very nonportable)