c++ - 如何在 fork 的帮助下并行搜索文件中的字符串? (GNU Linux/g++)

标签 c++ linux file search parallel-processing

我得到一个包含几行的文本文件,我正在该文件中查找字符串。我需要将以下命令行参数传递给程序:
- 文件路径
- 我正在寻找的字符串
- 允许程序“fork”以完成此任务的最大进程数。

应该如何构建这样的程序?

最佳答案

几个想法。

  • 您必须从每个进程中单独打开文件,否则它们将共享一个文件描述符,因此在文件中有一个共享位置(或不共享,请参阅注释,因为这可能是系统特定的...) .
  • 由于磁盘访问和/或缓存未命中模式,您可能看不到您希望的速度提升。

您可以通过内存映射文件来解决这两个问题(当然您仍然冒着增加缓存未命中率的风险)...


您有多需要这个?它确实存在过早优化的风险。我建议不要在没有迫切需要的情况下触及问题。真的。

关于c++ - 如何在 fork 的帮助下并行搜索文件中的字符串? (GNU Linux/g++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/194499/

相关文章:

c++ - 如何在一个 vector 中分配多个不同类型的变量或区分其类型

c# - 在 ListView C# 中拖放

javascript - Plupload 可以与 Ruby on Rails 一起使用吗?

python - 从多个文件的行创建生成器

c++ - 正则表达式匹配产生意外结果

c++ - 使用 g++ 和 CMake 损坏的配置文件信息

c++ - 对于非常大的输入,从 1...n 丢失和重复数字数组。使用 1...n 系列属性的解决方案。溢出问题

linux - 搜索包含字母 "o"和数字 6 的文件

c - 如何测试不同算法的效率

python - 安装python3-dev时出现的问题