【问题标题】:can pthread_create argument be modified by thread?线程可以修改 pthread_create 参数吗?
【发布时间】:2011-11-22 02:39:12
【问题描述】:

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

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

【问题讨论】:

    标签: c pthreads posix


    【解决方案1】:

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

    否 - 无需在线程中将结构强制转换为 void;确实,我不太确定您在想什么,但没有必要。线程函数得到一个void * 参数。它会将其转换为struct whatever *;然后它可以引用它。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 也感谢您的简洁回答!
      猜你喜欢
      • 2020-07-18
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多