runTasks will block execution of the calling thread until all added foreground tasks complete. See fiskfisk answer for more details. However the fact that the all tasks completed does not imply that all tasks successfully completed.
Gearman application framework intentionally does not make assumptions on (un)successful competition of the tasks. There are many Gearman client implementations and limitless number of use cases. It is on the developer to provide the most suitable solution for the use case in question.
Most commonly I would use the SplObjectStorage class along with implementing created, fail, warning, exception and complete callbacks to track tasks completion on the client side. There might be complex use cases when additional tracking on the workers side might be needed.