Right thread implementation in frequently invoked method

I am fresh in c++

But actually what I am interested in :

I have such method

void VideoRender::updateData(const std::string &i_obj_path, const std::string &i_pngPath, const uint i_subIndex) {     std::shared_ptr<FrameManager> container = std::make_shared<FrameManager>();      std::thread th1(&VideoRender::thread_task1, this, i_obj_path.c_str(), i_subIndex, container);     std::thread th2(&VideoRender::thread_task2, this, i_pngPath, container);      th1.join();     th2.join();      fifo.enqueue(container); } 

As you can see, this method is executing 2 task in 2 different threads and then join them. I invoke this method 20 times per second.

What bothers me: that 20 times per second I create 2 threads…

Question is: if this implementation in c++ looks ok? Because I think I should to use something like ThreadPool or some Handler that will run in another thread and I will push the task‘s there…

If am I right?