【发布时间】:2012-04-24 23:15:48
【问题描述】:
我正在进行的项目的一部分要求我从一个未知大小的文本文件中读取数据并将数据放入一个 10KB 的缓冲区中。我必须以 2KB 的块将文件读入这个缓冲区。我必须同时运行 4 个线程。第一个线程执行我刚才提到的阅读。
当线程将 2KB 的数据块读入缓冲区时,其他三个线程抓取读取器读入的 2KB 块并对其进行一些计算。一旦这些线程完成,它们就会抓取下一个 2KB 块并进行相同的计算。重复此操作,直到通读整个文本文件。
谁能给我一些关于如何继续这部分项目的指导?我知道如何多线程。它只是多线程和 I/O 的结合,我以前没有体验过。我之前只做过简单的I/O。
【问题讨论】:
-
当你说“我知道如何多线程”时,你是否熟悉条件变量?
-
三个线程能否分别在 2K 块的 1/3 上独立工作?如果没有,就会有很大的争论。
-
如果三个线程使用缓冲区中的数据只读取数据,则不会发生争用。
-
如果使用缓冲区中数据的三个线程只读取数据,那么我的问题将变为“输出到哪里去?”
标签: c multithreading file-io buffer