根据定义,真正的线程不共享内存,因此不能共享数据。
但是,我正在寻找一种方法来保留正在运行的连接计数(不仅仅是连接,还有其他一些东西),该计数可以从服务器中的任何一个线程中更新,并将在所有线程之间共享(静态)。我该怎么做?
一些注意事项:
-
性能是关键,所以没有数据库,没有外部服务器连接,最好没有Memcached。
-
此数据旨在每秒更新数千次
-
数据从一个线程更新后,必须立即可用,具有新值,供所有其他线程使用
-
理想情况下,数据应同时可供多个线程使用
使用 Xcache,您可以使用以下 API:
int xcache_inc(string name [, int value [, int ttl]])
这将以原子方式递增name
标识的值,并将其存储在跨请求的共享内存中。 要从 Apache 中任何正在运行的线程中检索值,请使用:
mixed xcache_get(string name)
注意:当 Apache (httpd) 重新启动时,这些值将丢失。
注意 2:根据定义,线程确实共享内存并轻松共享数据,因为它们在同一进程中运行。 当性能至关重要并且大量数据在线程之间并行处理和协调时,这是使用它们的主要原因之一,而不是可能较慢的 IPC 或复杂的共享内存解决方案。 但是,在线程之间共享数据很复杂,特别是当数据是可变的并且应该由对挑战有透彻了解的人员进行时。