gpt4 book ai didi

pthreads - pthread_key_t 和 pthread_key_create 方法如何工作?

转载 作者:行者123 更新时间:2023-12-02 19:09:35 24 4
gpt4 key购买 nike

我在弄清楚 pthread_key_t 和 pthread_key_create 如何工作时遇到了一些麻烦。据我了解,每个线程都有 TLS(线程本地存储),并且使用 key 来访问线程本地存储。我不明白的是,当创建 key 时,每个线程都可以使用它吗?假设线程 0 创建了 key 0,那么线程 1 可以使用 key 0 吗?如果线程 1 使用 key 0,它会访问自己的 TLS 还是线程 0 的 TLS?

是否有一些全局数组或其他东西可以跟踪所有正在使用的键?

最佳答案

pthread_keys 就是你所说的,由公共(public) key 引用的线程本地存储。因此多个线程使用相同的 key ,但获得不同的存储空间(每个线程)。

一个简单的例子(也是人为的),假设您正在构建一个异步服务器(如 IMAP)。您可以在数组中跟踪客户端连接,每个连接都有当前任务/请求的键。因此,当请求到来时,会启动一个新线程,并且该线程在 Client_Connection->WhatAmIDoing 键中存储指向“请求”结构的指针。线程现在不必传递该指针,因为线程执行的任何函数都可以简单地调用 pthread_getspecic() 函数并获取指向它应该执行的操作的指针。

关于pthreads - pthread_key_t 和 pthread_key_create 方法如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9005955/

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