我正在为以下场景设计服务器:
- 一系列单个图像存储在 NAS 上,比如说 100 个
- 客户端通过 TCP 套接字连接到服务器并请求 image39
- 服务器从 NAS 读取 image39 并通过套接字发送回客户端
- 客户很可能还会请求该系列中的其他图像,因此:
- 我想启动一个线程来遍历图像,读取它们,然后
cat image39 > /dev/null
强制缓存到服务器上的内存中 - 线程将按如下方式获取图像:image38、image40、image37、image41 等。
- 已经获取的图像被忽略
- 如果客户端现在请求 image77,我想重置获取线程以获取:image76、image78 等。
这必须扩展到许多系列和客户。可能在 1000 个并发预取的数量级上。我知道如果线程太多,线程可能会导致性能下降。改用 fork 一个新进程会更好吗?有没有比线程或进程更有效的方法?
谢谢!!!