Не на много лучше.
Потоки открываются в самом начале и закрываются в одной из функций. А если функция будет вызвана несколько раз? (Она ведь именно для этого предназначена.)
Вы взяли за основу неудачный пример для своего задания. Пишите заново - будет легче разобраться.