我有并行程序。在每个线程上,a 都有一个存储在 char* 中的位序列。
当我思考如何将这些位写入文件时,我的大脑会出现段错误。第一个线程中的位,然后是第二个线程中的位,依此类推,没有 0 需要具有完整字节。
我的一个例子将非常有用。数据没这么小,可能有 100MB
线程 1:13 位 1011 1111 0110 0(000) 因为我无法存储 13 位,但我可以存储 2 个字节
线程2:9位1001 1011 0(000 0000)
线程 3:7 位 1011 111(0)
线程 4:5 位 0001 1(000)
问题:
我怎样才能得到文件或 char* 中的最终结果?
1011 1111 0110 0100 1101 1010 1111 1000 11(00 0000)
如果有帮助,当这些位来自不同的线程时,我可以放置\'
1011 1111 0110 0'100 1101 10'10 1111 1'000 11(00 0000)
最佳答案
您不能直接从线程执行文件 I/O,因为这不会执行任何同步,并且事情不会以正确的顺序结束。
如果您事先知道每个线程可以生成多少位,我只需在父进程中预先分配存储,并将其工作区域交给每个线程即可。然后,当线程加入时,父进程可以按正确的顺序写出数据。
关于c - 按顺序从线程写入位序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47548227/