2

根据定义,真正的线程不共享内存,因此不能共享数据。

但是,我正在寻找一种方法来保持正在运行的连接计数(不仅仅是连接,还有其他一些东西),可以从服务器中的任何一个线程中更新,并且将在所有线程之间共享(静态) . 我该怎么做?

几点注意事项:

  • 性能是关键,所以没有数据库,没有外部服务器连接,最好没有 Memcached

  • 该数据意味着每秒更新数千次

  • 数据必须在从一个线程更新后立即以新值提供给所有其他线程

  • 理想情况下,数据应该同时可供多个线程使用

4

1 回答 1

2

使用Xcache,您可以使用以下 API:

int   xcache_inc(string name [, int value [, int ttl]])

这将自动递增由 标识的值name并将其存储在将跨请求存在的共享内存中。要从 Apache 中任何正在运行的线程中检索值,请使用:

mixed xcache_get(string name)

注意:重新启动 Apache (httpd) 时,这些值将丢失。

注意 2: 根据定义,线程确实共享内存并轻松共享数据,因为它们在同一进程中运行。当性能至关重要并且并行处理大量数据并在线程之间进行协调而不是可能较慢的 IPC 或复杂的共享内存解决方案时,这是使用它们的主要原因之一。然而,在线程之间共享数据是复杂的,特别是当数据是可变的并且应该由那些对挑战有透彻理解的人来承担时。

于 2013-11-12T05:00:35.777 回答