gpt4 book ai didi

c - C 中线程特定数据的示例

转载 作者:行者123 更新时间:2023-12-02 05:29:31 25 4
gpt4 key购买 nike

有人知道(或可以发布)使用线程特定数据的示例吗?我正在寻找解释清楚且易于理解的内容。我有一个全局 char * 变量,我想在几个线程之间共享它,我认为这就是 C 中线程特定数据机制的用途,对吗?

我是 Linux 用户!

最佳答案

实际上,线程特定数据适用于您不想在线程之间共享数据的情况——对于线程特定数据,每个线程都可以使用相同的变量名,但该变量引用不同的存储。

使用 gcc,您可以使用 __thread 属性将变量声明为线程特定的。如果您只想使原始类型成为线程特定的,并且您只处理 Linux 和 GCC,那么这是一个可能的解决方案。但是,如果您真的想在各种 unice 之间进行移植(一个理想的目标),或者如果您想让复杂的数据类型特定于线程,那么您需要为此使用 UNIX 例程...

它在 UNIX 中的工作方式是使用 pthread_key_create在产生任何线程之前,为了创建一个唯一的变量名。然后你使用 pthread_setspecificpthread_getspecific修改/访问与 key 关联的数据。 set/get 特定函数的语义是键充当映射的索引,其中每个线程都有自己的映射,因此从不同的线程执行这些例程会导致访问/修改不同的数据。如果可以使用映射,则可以使用特定于线程的存储。

显然,完成后,您需要调用适当的例程来清理数据。您可以使用 pthread_cleanup_push安排清理例程以释放与线程特定键关联的任何数据结构,您可以使用 pthread_key_destroy当 key 不再使用时。

关于c - C 中线程特定数据的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1736904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com