可以通过线程修改pthread_create参数吗?

时间:2011-11-22 02:39:13

标签: c pthreads posix

我可以将struct作为线程参数传递给pthread_create。

但是有可能在线程中修改这个结构,这样当线程终止时,主程序可以访问这个结构来获取修改过的数据吗? 如果是这样,我是否需要在线程中将结构转换回void?

2 个答案:

答案 0 :(得分:3)

是 - 假设线程函数通过指针传递结构,您可以修改它指向的结构。

不 - 没有必要在线程中将结构转换回void;事实上,我不太清楚你在想什么,但没有必要。线程函数获得void *参数。它会将其转换为struct whatever *;然后它可以引用它。

确保如果任何其他线程可以修改结构,那么您正在正确协调更改。

答案 1 :(得分:1)

是的,这是可能的,只是在线程完成之前不要触摸数据。至少没有保护。