【发布时间】:2011-11-22 02:39:12
【问题描述】:
我可以将 struct 作为线程参数传递给 pthread_create。
但是有没有可能在线程内部修改这个结构体,使得当线程终止时,主程序可以访问这个结构体来获取修改后的数据呢? 如果是这样,我需要在线程中将结构转换回 void 吗?
【问题讨论】:
我可以将 struct 作为线程参数传递给 pthread_create。
但是有没有可能在线程内部修改这个结构体,使得当线程终止时,主程序可以访问这个结构体来获取修改后的数据呢? 如果是这样,我需要在线程中将结构转换回 void 吗?
【问题讨论】:
是的 - 假设线程函数通过指针传递结构,您可以修改它指向的结构。
否 - 无需在线程中将结构强制转换为 void;确实,我不太确定您在想什么,但没有必要。线程函数得到一个void * 参数。它会将其转换为struct whatever *;然后它可以引用它。
只要确保如果任何其他线程可以修改结构,那么您正在正确地协调更改。
【讨论】:
是的,这是可能的,只是在线程完成之前不要触摸数据。至少不是没有保护。
【讨论】: