Нужно ли создавать отдельную функция для каждого thread (_beginthread)?
Одну функцию можно запускать в нескольких потоках.
P.S.
1. Вы уверены что вам нужен _beginthread вместо std::thread?
2. Убедитесь что computeDoneA0 и computeDoneA1 защищены для многопоточного использования.
используйте std::atomic_bool или std::mutex + std::lock_guard для доступа к обычному bool
Потестил и не багов не нашел.
В общем можно одну функцию описать. Итого Вариант 1 работает.