gpt4 book ai didi

c - 在多线程中将多个小片段写入 c 中的临时文件的正确方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 07:08:16 24 4
gpt4 key购买 nike

我正在模拟多线程文件下载。我的策略是每个线程都会收到小文件片段(每个文件片段都有 piece_lengthpiece_sizestart_writing_pos )

然后每个线程写入同一个缓冲区。我如何实现它?我需要担心碰撞吗?

//===================跟进============//

所以我写了一个小demo如下:

#include <stdio.h>

int main(){


char* tempfilePath = "./testing";
FILE *fp;
fp = fopen(tempfilePath,"w+");//w+: for reading and writing
fseek( fp, 9, SEEK_SET);//starting in 10-th bytes
fwrite("----------",sizeof(char), 10, fp);
fclose(fp);
}

在执行之前,我让“./testing”中的内容为“XXXXXXXXXXXXXXXXXXX”,在执行上述操作后,我得到“^@^@^@^@^@^@^@^@^@--- ------"我想知道问题出在哪里....

最佳答案

做大多数 Torrent 客户端所做的事情。创建一个最终大小的文件,扩展名为 .part。然后将文件的非重叠部分分配给每个线程,每个线程都有自己的文件描述符。因此避免了碰撞。完成后重命名为最终名称。

关于c - 在多线程中将多个小片段写入 c 中的临时文件的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30535526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com