c# - 如何使用生产者/消费者队列递归搜索文件夹和文件?

标签 c# multithreading producer-consumer

我想先搜索目录,然后搜索其中的文件,再搜索关键字。

我知道我需要两个类,生产者类和消费者类,但我不知道如何使用 C# 生产者/消费者队列进行搜索?

public class Program
{
    private static void Main()
    {
        Queue<File> searchFile = new Queue<File>();
        Queue<Directory> searchDirectory = new Queue<Directory>();

        new Thread(searchDirectory).Start();

        for (int i = 0; i < 3; i++)
            new Thread(searchFile).Start();
    }
}

最佳答案

初始问题:

  1. 您正在声明 2 个变量 不同类型使用相同 具有相同作用域的变量名。
  2. 您不想启动线程 搜索目录和另一个 一个在文件上。

第 2 项的问题是您正在处理多线程的最大瓶颈之一 - 即磁盘 IO。通过实现超过 1 个工作线程来执行磁盘 IO(在标准 HDD 设备上)将一无所获。

详细说明您要做什么(请举例说明)。可能有更好的过程。

关于c# - 如何使用生产者/消费者队列递归搜索文件夹和文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6296443/

相关文章:

c# - 如何将 nopcommerce 页面标题更改为我的网站名称?

c# - 如何使用 NLog 配置 API 将 NULL 写入数据库中的列?

Java InputStream 在线程中关闭

multithreading - 必须同步访问scala.collection.immutable.List和Vector吗?

java - java中并发hashmap的生产者消费者模式

java - 生产者-消费者。消费者等待所有生产者完成,毒丸

在运行时添加的 C# TabPages 不会自动调整父窗体的大小

c# - MVC-3 是否包含用于快速自动撰写丰富 (HTML) 电子邮件的库?

multithreading - (Delphi 2009) idIRC、MDI 和挂起问题

java - 如何通知消费者作业生产者作业已完成?