Ale*_*ros 7 c c++ java multithreading producer-consumer
我有一个巨大的行分隔文本文件,我想对每一行进行一些计算.我需要制作一个多线程程序来处理它,因为每条线的处理需要花费最多的时间来完成而不是读取每一行.(瓶颈在于CPU处理,而不是IO)
我想出了两个选项:
1)从主线程打开文件,在文件句柄上创建一个锁并在工作线程周围传递文件句柄,然后让每个工作者直接读取文件
2)创建一个生产者/消费者设置,其中只有主线程具有对文件的直接读访问权,并使用共享队列将行提供给每个工作线程
要知道的事情:
你会选择哪个选项?为什么?
我会建议第二种选择,因为它比第一种选择更清晰,更简单.第一个选项的可伸缩性较低,需要在线程之间进行额外的通信,以便在文件行上同步它们的进度.在第二个选项中,您有一个处理IO的调度程序并启动工作线程以启动它们的计算,并且每个计算线程彼此完全独立,因此允许您进行扩展.此外,在第二个选项中,您可以更清晰地分离逻辑.
归档时间: |
|
查看次数: |
309 次 |
最近记录: |