有一些問題搞清楚如何做到這一點。將嘗試解釋我首先要做的是什麼。可以在同一個線程中並行調用一個插槽嗎?
首先我有這個類,它包含一個只讀文件。這個類將使用這個其他類(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