有一些问题搞清楚如何做到这一点。将尝试解释我首先要做的是什么。可以在同一个线程中并行调用一个插槽吗?
首先我有这个类,它包含一个只读文件。这个类将使用这个其他类(StorageProvider)来上传此文件的块。该类包含一个QNetworkAccessManager。当上传文件块时,我会将块发送到StorageProvider类,然后使用它发送给QNAM的REST请求。当QNetworkReply完成时,StorageProvider会将其发送给上传器(以便它知道该块已完成)。
上传 - > StorageProvider - > QNetworkAccessManager - >互联网
到目前为止好权?我可以在上传器中插入一个插槽,该插槽用于侦听StorageHandler何时完成QNAM上的请求。
但是,由于QNAM可以通过HTTP同时执行6个请求,因此我想这样做的目的是当StorageProvider发出信号表明它已完成一个块,并且唯一的BlockId连接到信号,允许上传者知道完成的WHICH块,而不仅仅是完成。
这意味着,只要信号(块标识)由StorageProvider发射将被调用插槽,则要存储做的ID,然后查找未上传一个新的(忘了提我有一个已经上传的ID列表,所以当它通过ID(0 ... 1000)时,它还需要1.将文件4mb的索引推送到前方2.检查已经存在的列表块如果它在。
所以,我的问题是:如果我有一个插槽,增加一个“currentBlockId”,直到它找到下一个可以上传+读取文件4MB的时间,直到我们在位置“currentBlockId”* 4mb(文件中的索引将像索引一样向前推,并且它不会是随机访问。他是我们完成的文件的结尾),并且只要5个上传文件中的一个完成,就会调用此插槽,我会遇到问题吗?我要问的原因是QNAM使它在不同的线程中调用,这样做可能会同时发出2-5个“finished()”信号,这将调用同时处理该信号的插槽?就像,我不太确定那会发生什么。请注意,我的代码没有任何线程,理论上信号应该排队?这个插槽会被一次又一次地调用5次?
感谢
没有。一个线程,一个代码的执行。任何其他意味着有另一个线程。 – UmNyobe 2012-04-23 22:28:36