Одна потенциальная проблема - как создается хранилище для переданной в структуре mystruct
.Время жизни этой переменной очень важно для ее использования в потоке.Например, если вызывающий detachnewthread
объявил это в стеке, а затем возвратил до завершения потока, это было бы неопределенным поведением.Аналогично, если он был выделен динамически, то необходимо убедиться, что он не освобожден до завершения потока.
В ответ на комментарий / вопрос: Необходимость какого-либо мьютекса зависит от использования.Ради обсуждения, я буду предполагать, что это распределяется динамически.Если вызывающий поток заполняет содержимое структуры до создания «дочернего» потока и может гарантировать, что он не будет освобожден до тех пор, пока дочерний поток не выйдет, а последующий доступ только для чтения, то вам не понадобитсямьютекс, чтобы защитить его.Я могу представить себе сценарий такого типа, если структура содержит информацию, которая нужна дочернему потоку для выполнения своей задачи.
Если, однако, более чем один поток будет обращаться к содержимому структуры и один или несколько потоков будут изменять данные (запись в структуру)тогда вам, вероятно, нужен мьютекс для его защиты.