我有一台服务器,它接收来自数千个连接 tcp 套接字的客户端的请求,以从一个硬盘读取或写入数据。
我知道在这种情况下我需要一个线程来执行所有 HD file.IO 但是我如何将所有这些请求从套接字连接线程传递给一个主硬盘驱动器管理器,该管理器将按某种顺序完成这项工作并将数据转换为连接的套接字线程?
有没有办法以这种方式排队任务?
我有一台服务器,它接收来自数千个连接 tcp 套接字的客户端的请求,以从一个硬盘读取或写入数据。
我知道在这种情况下我需要一个线程来执行所有 HD file.IO 但是我如何将所有这些请求从套接字连接线程传递给一个主硬盘驱动器管理器,该管理器将按某种顺序完成这项工作并将数据转换为连接的套接字线程?
有没有办法以这种方式排队任务?
当然,看看生产者/消费者模式和BlockingQueue
.
我不同意这里所说的,与使用数据并将其写入硬盘的管理器一起使用另一层是更好且更具可扩展性的方法,您将释放连接线程以完成其自然工作,并且您有一个管理器可以给出任何所需的命令,例如停止写入磁盘或写入分布式其他源,如果您只想完成任务,您可以选择每种方法,每次写入磁盘时内核明智,这些命令被解释为系统调用,这些系统调用将通过缓存检查现有数据块,直到它到达实际请求然后此请求与系统中的所有其他请求一起排队,并且其他一些磁盘线程将获取您的请求,这意味着您的连接线程可能不可用如果它正在等待响应,在那个时候,那个线程可以做一些工作。