Это полностью вам решать. Если вы создаете два потока, вы можете управлять ими из родительского процесса и решать, какое поведение вы хотите. Вы можете wait
в обоих потоках или подождать, пока один из них не станет доступен (например, используя select
из родительского потока или signal
из дочернего потока), и, возможно, убить другой (используя сигнал снова, или kill
).
Очень хороший справочник по системному программированию (многопроцессорность, потоки, связь, параллелизм ..), см. Системное программирование Unix в Objective Caml . У него есть пример (psearch
здесь ), где потоки сотрудничают, чтобы найти результат, и останавливаются, как только один из них преуспел.