APUE中12.6节内的代码12-5实现的getenv感觉没有达到线程安全啊,求指教~

Sad_Sugar 2014-01-17 06:13:03
作者用线程私有数据实现了“线程安全”的getenv函数,但我觉得如果有多个线程同时调用这个getenv()函数的时候,依然返回的是同一个缓冲区的内容,没有达到线程安全。

求解释~谢谢!

如果需要具体的问题描述和相应代码,可以在我的博客看:http://blog.csdn.net/sad_sugar/article/details/18412603

多谢大家指教!!!
...全文
174 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sad_Sugar 2014-01-18
  • 打赏
  • 举报
回复
明白了!!!多谢!!!
非凡glj 2014-01-17
  • 打赏
  • 举报
回复
引用 2 楼 Sad_Sugar 的回复:
[quote=引用 1 楼 zgglj 的回复:] [quote=引用 楼主 Sad_Sugar 的回复:] 作者用线程私有数据实现了“线程安全”的getenv函数,但我觉得如果有多个线程同时调用这个getenv()函数的时候,依然返回的是同一个缓冲区的内容,没有达到线程安全。 求解释~谢谢! 如果需要具体的问题描述和相应代码,可以在我的博客看:http://blog.csdn.net/sad_sugar/article/details/18412603 多谢大家指教!!!
线程私有存储的使用是整个进程对某个pthread_key_t做一次 pthread_key_create,每个线程调用pthread_getspecific的时候取到自己的私有存储空间,你可以想象成是该key是一个map,每个线程用自己的线程id获取对应的空间[/quote] void* pthread_getspecific(pthread_key_t key),这个函数的参数是生成的key,你的意思是,虽然整个进程只产生一个key,但每个线程通过同样的key得到的存储空间却是不同的,并不是说一个key对应一段空间,是这样理解吗?[/quote] 是的
Sad_Sugar 2014-01-17
  • 打赏
  • 举报
回复
引用 1 楼 zgglj 的回复:
[quote=引用 楼主 Sad_Sugar 的回复:] 作者用线程私有数据实现了“线程安全”的getenv函数,但我觉得如果有多个线程同时调用这个getenv()函数的时候,依然返回的是同一个缓冲区的内容,没有达到线程安全。 求解释~谢谢! 如果需要具体的问题描述和相应代码,可以在我的博客看:http://blog.csdn.net/sad_sugar/article/details/18412603 多谢大家指教!!!
线程私有存储的使用是整个进程对某个pthread_key_t做一次 pthread_key_create,每个线程调用pthread_getspecific的时候取到自己的私有存储空间,你可以想象成是该key是一个map,每个线程用自己的线程id获取对应的空间[/quote] void* pthread_getspecific(pthread_key_t key),这个函数的参数是生成的key,你的意思是,虽然整个进程只产生一个key,但每个线程通过同样的key得到的存储空间却是不同的,并不是说一个key对应一段空间,是这样理解吗?
非凡glj 2014-01-17
  • 打赏
  • 举报
回复
引用 楼主 Sad_Sugar 的回复:
作者用线程私有数据实现了“线程安全”的getenv函数,但我觉得如果有多个线程同时调用这个getenv()函数的时候,依然返回的是同一个缓冲区的内容,没有达到线程安全。 求解释~谢谢! 如果需要具体的问题描述和相应代码,可以在我的博客看:http://blog.csdn.net/sad_sugar/article/details/18412603 多谢大家指教!!!
线程私有存储的使用是整个进程对某个pthread_key_t做一次 pthread_key_create,每个线程调用pthread_getspecific的时候取到自己的私有存储空间,你可以想象成是该key是一个map,每个线程用自己的线程id获取对应的空间

18,773

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 专题技术讨论区
社区管理员
  • 专题技术讨论区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧