当 fwrite() 应用于多个 FILE*、相同的文件描述符时,它是原子的吗?

问题描述 投票:0回答:1
  1. 使用 fileno() 获取
    stdout
    的实际文件描述符。
  2. 使用 fdopen() 创建两个不同的 FILE* 结构,分别命名为
    a
    b
  3. 创建两个线程,分别命名为
    A
    B
    ,使用fwrite()向
    a
    b
    写入一些内容。

问题:

  1. 此操作是否正确或推荐?
  2. 如果 A 线程正在写入
    123
    ,B 线程正在写入
    456
    ,是否有可能
    142536
    在 stdout 中得到输出?
c io stdout fwrite
1个回答
0
投票

文件访问应该是原子的。

更好地定义另一个线程,它控制文件并实现一个类似队列的结构,其他任务可以用数据填充。

然后文件线程将从结构中弹出(想想 FIFO)数据并将其写入文件。

© www.soinside.com 2019 - 2024. All rights reserved.