所以我正在看我的下一个学校作业,我很困惑。我想我会找专家指点方向。我对同步的了解非常缺乏,而且我对它所引用的“mcopyfile”赋值没有这么热。可怕的可能是一个好词。如果我能就如何解决这个问题找到一些方向,我将不胜感激。不寻找某人完成我的任务,只需要有人指出我正确的方向。宝贝的步骤。
基于多线程文件复制工具 您在实验2中创建的(mcopyfile),现在请使用工作人员 使用固定的池(生产者 - 消费者模型)实现 处理负载的线程数(无论有多少文件) 要复制的目录)。您的程序应该创建1个文件副本生成器 线程和多个文件复制消费者线程(此数字被采用 从命令行参数)。文件复制生成器线程将 生成缓冲区中的(源和目标)文件描述符列表 有限大小的结构。每次当生产者访问缓冲区时,它都会写入 一个(源,目标)文件条目(每次访问)。和所有文件副本 消费者线程将从此缓冲区读取,执行实际文件 复制任务,并删除相应的文件条目(每个使用者 每次都会消耗一个条目)。生产者和消费者 线程会将消息写入标准输出,给出文件名 和完成状态(例如,对于制作人:“完成推杆 缓冲区中的file1“,对于消费者:”完成将file1复制到...“)。
答案 0 :(得分:1)
假设您知道如何生成线程,让我为您解决问题。有以下组件:
现在根据问题,为生产者生成一个线程,为消费者生成 n 线程。这就是线程的作用:
制作人线程
消费者话题
我希望这会有所帮助。
答案 1 :(得分:0)
一旦您知道用于线程功能的API /库,您的作业就会非常简单。
首先,您将解析命令行参数并创建指定数量的线程,然后从主线程获取文件夹中的文件列表并开始将它们放入数组中(如std :: vector)在线程之间共享并与互斥锁(或Windows上的关键部分)同步。每当其中一个使用者线程获取互斥锁时,它就会在数组中复制一个文件条目,从数组中删除该条目,释放互斥锁,以便另一个线程可以开始执行相同的操作,并开始复制由该数据库表示的文件。从数组中删除它。
我会给你一些代码片段,但你没有说明你正在使用什么API /库来进行线程功能。