2011-11-30 81 views
6

可能重複:
What is thread safe or non thread safe in PHP線程安全在PHP上下文中意味着什麼?

是什麼意思時,東西或者不是線程安全的?

例如,的setlocale()在PHP不是線程安全:

區域設置信息是每個進程保持,而不是每個線程。如果 正在Windows上的多線程服務器API(如IIS或Apache )上運行PHP,則在運行腳本的 腳本運行時,雖然腳本本身從未稱爲 setlocale(),但您可能會遇到區域設置突然更改。發生這種情況是由於其他腳本同時在同一進程的不同 線程中運行,並使用setlocale()更改了進程範圍的語言環境。

http://php.net/manual/en/function.setlocale.php

是什麼意思實用?線程安全或不安全是件好事嗎?

在什麼情況下你需要一個線程安全或非線程安全的解決方案來解決你的問題?

+0

您是否閱讀過那部分內容,它只說明它與某些Web服務器設置有關?這不是你可以選擇或使用的東西。而'setlocale'就是潛在副作用的一個好例子。 (除了它在最近的Windows版本上實際上每線程工作)。 – mario

回答

4

線程安全是一件好事,這意味着雖然可能有多個併發線程,它們被用在不會有競爭條件,併發問題以安全的方式互相交談,等等

線程安全性是一種計算機編程概念,適用於多線程程序的上下文環境 。一段代碼是線程安全的,如果它只能以線程安全的方式處理共享的數據結構,它可以使多個線程同時安全地執行。 制定線程安全數據結構有多種策略。

Source

相關問題