Вы не можете заставить t1 ждать t3, так как нет способа прервать pthread_join, продолжая его работу, однако вы можете отменить t1 с помощью pthread_cancel, который прервет его, и, таким образом, вы больше не будете ждать окончания t2 и получите другой поток, чтобы ждать t3.