multithreading - 是否对通过 tcp 套接字发送的并发文件使用互斥锁

标签 multithreading sockets tcp concurrency

我开发了一个多线程系统,它为每个客户端请求创建一个子进程,以通过 tcp 套接字读取文件并将文件发送给客户端。

我很难确定每次文件读取都使用互斥量是否会提高性能,或者让子进程在不使用互斥量的情况下并发地从硬盘读取文件是否更好。

文件大小平均为 500 ko,我们估计同时的 tcp 连接为每分钟最多 2000 个。

PS:程序以 2000 字节为单位读取每个文件,发送每个缓冲区并循环直到传输完成

最佳答案

我一直在处理这类问题:哪些操作由谁在哪些资源上执行?

正在执行的一些操作是:

  • 读取文件(可能共享?)
    • 操作系统(Linux?)是否保证文件读取是线程安全的? looks like it .如果情况确实如此(我不是很熟悉),那么协调互斥锁的跨进程文件访问将是不必要的开销。
  • 每个进程写入 TCP
    • 这应该不是并发问题,因为每个进程处理自己的 TCP 连接

如果发布的链接反射(reflect)了现实,那么就不需要跨进程协调(互斥)

关于multithreading - 是否对通过 tcp 套接字发送的并发文件使用互斥锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50233530/

相关文章:

sql - 锁定选定的行,以便其他事务在读取时忽略它们

java - 多线程中的 SNMP Walk

c - C 中的套接字编程和反序列化响应

c - 从Java-Client接收数据(数据包含int、short、string)

android - 同步Android和PC的系统时钟

c++ - 使用 QtConcurrent 加载 Pixmap 并绘制它

java - 如何从声明 edittext 的另一个类中的线程更改 edittext 的文本?

sockets - 从 IAsyncResult UDP 中提取 IP

java - TCP JSON 命令未到达

asp.net - 如何查找 URL 注册(不是预订)?