【发布时间】:2012-01-10 04:07:15
【问题描述】:
什么是线程安全的或不是线程安全的?
例如,PHP 中的 setlocale() 不是线程安全的:
区域信息是按进程维护的,而不是按线程维护的。如果 您在 IIS 或 Apache 等多线程服务器 API 上运行 PHP 在 Windows 上,您可能会遇到区域设置的突然变化,而 脚本正在运行,尽管脚本本身从未调用过 设置语言环境()。这是由于其他脚本运行在不同的 同一进程的线程在同一时间,改变 使用 setlocale() 的进程范围区域设置。
http://php.net/manual/en/function.setlocale.php
这实际上意味着什么?线程安全是不是一件好事?
在什么情况下您需要线程安全或非线程安全的解决方案来解决您的问题?
【问题讨论】:
-
您是否阅读了解释它仅与某些网络服务器设置相关的部分?这不是您可以选择或使用的东西。
setlocale是潜在副作用的一个很好的例子。 (除了它实际上在最近的 Windows 版本上按线程工作。)
标签: php thread-safety