![]() |
1
7
在编写的代码中,每个线程 使用相同的文件 ,并有效地尝试附加到它。即使这可以工作,你也会有一个糟糕的竞争条件(因为线程会试图同时附加到同一个文件)。 你看到的错误纯粹是因为你在每个循环迭代中使用了相同的文件,所以当你试图打开文件(在第一次迭代之后)时,它会出错,因为它是由不同的循环迭代打开的。
此外,您永远不会使用循环变量(
话虽如此,如果这是示例代码,您会发现纯粹由文件I/O绑定的循环往往无法很好地并行化。实际使用的驱动器将成为限制因素,因此运行纯粹并行读写文件的代码通常会导致生成的代码运行得比顺序运行更慢,而不是更快。
您“作为示例”显示的代码没有执行这些操作,因此很难看出您的问题可能发生在哪里。您可以写入数组或
|
![]() |
2
2
如前所述 in this question 以下为:
|
![]() |
3
1
使用
|
![]() |
4
0
为了消除文件使用中的错误(假设它正在使用中,因为另一个线程正在向它写入),您必须同步对该文件的访问。这通常意味着每个并行执行都在等待其他执行完成写入,从而破坏了并行运行的目的。 |
![]() |
7BeholdeR7 · 文件夹的重量超过其中的文件(六倍) 2 年前 |
![]() |
ilteris · 为什么程序在fscanf后崩溃 2 年前 |
![]() |
Peaceful · 使用fscanf读取C中具有未知行数的文件 2 年前 |
![]() |
NOCi · 如何将Tensorflow的结果记录到CSV文件 2 年前 |
![]() |
Oakzeh · 如何在字符串索引之前读取文件并删除字符 2 年前 |