аргумент pthread_create может быть изменен потоком? - PullRequest
2 голосов
/ 22 ноября 2011

Я могу передать struct в pthread_create в качестве аргумента потока.

Но возможно ли изменить эту структуру в потоке, чтобы при завершении потока основная программа могла получить доступ к этой структуре для получения измененных данных? Если да, нужно ли приводить структуру обратно в void в потоке?

Ответы [ 2 ]

3 голосов
/ 22 ноября 2011

Да - предполагая, что функции потока передается структура по указателю, вы можете изменить структуру, на которую она указывает.

Нет - нет необходимости приводить структуру обратно к void в потоке; действительно, я не совсем уверен, о чем ты думаешь, но в этом нет необходимости. Функция потока получает аргумент void *. Это преобразует это в struct whatever *; тогда он может ссылаться на это.

Просто убедитесь, что если какие-то другие потоки могут изменить структуру, то вы правильно координируете изменения.

1 голос
/ 22 ноября 2011

Да, это возможно, просто не трогайте данные, пока поток не закончится. По крайней мере, не без защиты.

...