c - 多个线程写入同一个文件

标签 c multithreading

我想知道我们是否可以使用多个线程在同一个文件上写入二进制数据。

FILE *fd = openfile("test");
int SIZE = 1000000000;
int * table = malloc(sizeof(int) * SIZE);
// .. filling the table
fwrite(table, sizeof(*table), SIZE, fd);

所以我想知道我是否可以使用线程,每个线程调用 fssek 寻找不同的位置写入同一个文件。

有什么想法吗?

最佳答案

fwrite 应该是线程安全的,但无论如何您都需要一个互斥量,因为您需要查找和写入是原子的。根据您的平台,您可能有一个带有偏移量的写入函数,或者您可能能够在每个线程中打开文件。如果您按照代码建议将所有内容都存储在内存中,那么一个更好的选择就是让每个线程填充到一个大数组中,然后在完成所有操作后将其写出。

关于c - 多个线程写入同一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26565498/

相关文章:

python - 结合 PyCharm 和 CLion IDE

c - 在 C 中扫描多行

Android IPC LocalSocket 与 Binder (AIDL)

收集 2 : error: ld returned 1 exit status, gcc

c - 链接ARM C和Rust

android - 如何强制 Cmake 执行多组件依赖的顶级 CMakeLists.txt?

c - pthread_detach 会为我管理我的内存吗?

c# - 表格中的光标点

java - 使用 ThreadPoolExecutor 进行线程同步

Java wait/notify 不在线程中调用