我可以将struct作为线程参数传递给pthread_create。
但是有可能在线程中修改这个结构,这样当线程终止时,主程序可以访问这个结构来获取修改过的数据吗? 如果是这样,我是否需要在线程中将结构转换回void?
答案 0 :(得分:3)
是 - 假设线程函数通过指针传递结构,您可以修改它指向的结构。
不 - 没有必要在线程中将结构转换回void;事实上,我不太清楚你在想什么,但没有必要。线程函数获得void *
参数。它会将其转换为struct whatever *
;然后它可以引用它。
确保如果任何其他线程可以修改结构,那么您正在正确协调更改。
答案 1 :(得分:1)
是的,这是可能的,只是在线程完成之前不要触摸数据。至少没有保护。