Есть ли лучший способ сделать это?
Не совсем. Поскольку функции потока могут принимать только один аргумент void *
, любые данные, которые вы хотите передать в функцию потока, должны быть частью структуры или класса, который содержит необходимые вам данные. Обычный шаблон проектирования должен иметь класс или структуру ThreadParameters
, которые содержат все, что вам нужно, и которые вы можете добавить, если вам нужно иметь больше параметров.
Самый простой способ обработать освобождение - это иметь человека, который создает , поток выделяет ThreadParameters
, и сам поток освобождает ThreadParameters
непосредственно перед его выходом.