我有一台服务器接收来自连接tcp套接字的数千个客户端的请求,以便从一个硬盘读取或写入数据。
我知道我需要一个线程来完成所有HD file.IO在这种情况下,但我怎样才能将所有这些请求从套接字连接线程传递给一个主硬盘驱动器管理器,它将按顺序完成这项工作并转向连接套接字线程的数据?
有没有办法以这种方式排队任务?
答案 0 :(得分:1)
当然,请查看producer/consumer pattern和BlockingQueue
。
答案 1 :(得分:-1)
我不同意这里所说的,与管理员一起消费数据并将其写入硬盘驱动器的另一层是更好和更可扩展的方法,你将释放连接线程来完成他们的自然工作,你有一个经理您可以提供任何所需的命令,例如停止写入磁盘或写入分布式其他源,如果您只想完成任务,您可以选择每种方法,内核明智地每次写入磁盘时这些命令都被解释为系统调用,这些系统调用将通过缓存检查现有数据块,直到它到达实际请求,然后该请求与系统中的所有其他请求排队,其他一些磁盘线程将获取您的请求,这意味着您的连接线程可能如果等待响应,那么该线程本可以完成一些工作。