2011-11-22 4 views
2

Я могу передать struct в pthread_create в качестве аргумента потока.Может ли аргумент pthread_create быть изменен нитью?

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

ответ

3

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

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

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

1

Да, это возможно, просто не касайтесь данных до тех пор, пока нить не будет выполнена. По крайней мере, не без защиты.

+0

Спасибо за краткий ответ тоже! – yongtw123

Смежные вопросы