Потоки приплетены совершенно напрасно, только запутывают. Функция
из одного потока никак не вызовет функцию из другого потока -- это
в принципе невозможно. Суть именно в принадлежности изначальной
функции (main) и вызываемой через указатель функции к одному
классу, компоненту, модулю... Достаточно представить, что в
программе нет свободных функций. Все они кому-то принадлежат.