You can create a number of std::threads and store them in a vector. Let's say you have your function
void f(int x, std::string const& y);
Then you can create a vector with threads running the function with
std::vector<std::thread> threadgroup;
threadgroup.emplace_back(1, "abc");
threadgroup.emplace_back(2, "def");
This will start two threads in a vector. Make sure to join the thread before exiting.
I think you actually will need a certain number of threads processing a container with links. Each thread downloads a page and adds new links to the container. When one page is processed, it fetches a new link from the container.