16,216
社区成员
发帖
与我相关
我的任务
分享
static QSemaphore freeSpace(8);
static QSemaphore usedSpace(0);
static QQueue<MoveInfo *> task_q;
// 消费者代码
void Consumer::run()
{
MoveInfo *info;
while(true)
{
usedSpace.acquire();
info = task_q.dequeue();
freeSpace.release();
if(info->src.isEmpty())
{
info->deleteLater();
break;
}
if(!QFileInfo(info->dst).exists())
{
if(info->remove)
{
bool b = QFile::rename(info->src, info->dst);
b = QFile::rename(info->src.replace(".sa", ".sc"), info->dst.replace(".sa", ".sc"));
} else {
QFile::copy(info->src, info->dst);
QFile::copy(info->src.replace(".sa", ".sc"), info->dst.replace(".sa", ".sc"));
}
}
info->deleteLater();
}
}