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