我开发了一个多线程系统,它为每个客户端请求创建一个子进程,以通过 tcp 套接字读取文件并将文件发送给客户端。
我很难确定每次文件读取都使用互斥量是否会提高性能,或者让子进程在不使用互斥量的情况下并发地从硬盘读取文件是否更好。
文件大小平均为 500 ko,我们估计同时的 tcp 连接为每分钟最多 2000 个。
PS:程序以 2000 字节为单位读取每个文件,发送每个缓冲区并循环直到传输完成
最佳答案
我一直在处理这类问题:哪些操作由谁在哪些资源上执行?
正在执行的一些操作是:
- 读取文件(可能共享?)
- 操作系统(Linux?)是否保证文件读取是线程安全的? 是它looks like it .如果情况确实如此(我不是很熟悉),那么协调互斥锁的跨进程文件访问将是不必要的开销。
- 每个进程写入 TCP
- 这应该不是并发问题,因为每个进程处理自己的 TCP 连接
如果发布的链接反射(reflect)了现实,那么就不需要跨进程协调(互斥)
关于multithreading - 是否对通过 tcp 套接字发送的并发文件使用互斥锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50233530/