Pro*_*eny 5 bash multithreading thread-safety gnu-parallel
我正在处理大数据,正在尝试并行化流程功能。我可以使用多个线程,每个用户处理的都是不同的线程(我有20万个用户)。
每个线程应n在输出文件中附加文件的第一行,该文件在所有线程之间共享一个输出文件。
我编写了一个Java程序来执行head -n 256 thread_processed.txt >> output(每个线程都会执行此操作)
我需要以原子方式编写输出文件。
如果线程A从0到9写了行,线程B从10到19写了行,则输出应为:[0...9 10... 19]。线不能重叠,不能像[0 1 2 17 18 3 4 ...]
如何在bash脚本中管理对输出文件的并发写访问?
sem 来自GNU Parallel的应该能够做到:
sem --id mylock "head -n 256 thread_processed.txt >> output"
Run Code Online (Sandbox Code Playgroud)
它将启动一个名为mylock的互斥锁。
如果您担心有人output在head运行时可能会阅读:
sem --id mylock "cp output o2; head -n 256 thread_processed.txt >> o2; mv o2 output"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1070 次 |
| 最近记录: |