并发文件上传的问题?

2 min read

C 语言模拟了一个 hdfs 并发的上传文件的功能,由于上传文件分 4 步

  1. 发送创建文件请求
  2. 接收创建文件响应
  3. 发送上传文件请求
  4. 接收上传文件响应

只有第二步返回成功才会执行第三步
但问题是第二步得到的响应有可能是别的请求的响应,这样无法判断第一步是否成功

比如:第 2 步可能接收的是别的上传文件的响应,而非创建文件响应

这个问题可以通过给每个文件上传请求添加一个标识,然后在第二步接收到响应时判断该标识是否与当前上传文件请求的标识一致,如果一致则执行第三步,否则需要重新发送创建文件请求。这样就能够保证每个上传文件请求的顺序和正确性。同时可以使用锁来控制并发,避免多个上传请求同时操作同一个文件。