qt thread usage details

 qt thread usage 



DeleteSdkThread::DeleteSdkThread(QObject *parent) : QThread(parent)
{
	m_runFlag = true;
	start();
}

DeleteSdkThread::~DeleteSdkThread()
{
	m_runFlag = false;
	wait();
}

void DeleteSdkThread::addToSdkInfo(QMap<long long, long long> sdkMap)
{
	QMutexLocker locker(&mutex);

	xSdkList.append(sdkMap);
}

void DeleteSdkThread::addToAsdkInfo(QList<PlayVideoInfo> list)
{
	QMutexLocker locker(&mutex);
	sdkList.append(list);
}

void DeleteSdkThread::run()
{
	while (1)
	{
		QThread::msleep(1);

		if (!m_runFlag)
			break;
		mutex.lock();
		if (xSdkList.count() == 0 && sdkList.count() == 0)
		{
			mutex.unlock();
			continue;
		}
		else
		{
			if (!xSdkList.isEmpty())
			{
				QMap<long long, long long> sdkInfo = xSdkList.takeFirst();
				mutex.unlock();

				long long userId = -1;
				long long handle;
				QMap<long long, long long>::iterator iter = sdkInfo.begin();
				while (iter != sdkInfo.end())
				{
					userId = iter.key();
					handle = iter.value();
					haikang = new CHaiKangControl();
					haikang->deleteSdk(userId, handle);
					iter++;
				}
			}
			else if (!sdkList.isEmpty())
			{
				QList<PlayVideoInfo> list = sdkList.takeFirst();
				mutex.unlock();

				for (int i = 0; i < list.size(); i++)
				{
					long long userId = list[i].userId;
					long long handle = list[i].m_playHandle;

					haikang = new CHaiKangControl();
					haikang->deleteSdk(userId, handle);
				}
			}
		}
	}
}



class DeleteSdkThread : public QThread
{
	Q_OBJECT
public:
	DeleteSdkThread(QObject *parent = nullptr);
	~DeleteSdkThread();
	// 单播放器
	void addToSdkInfo(QMap<long long,long long> sdkMap);
	// 多播放器
	void addToAsdkInfo(QList<PlayVideoInfo> sdkList);
private:
	bool m_runFlag;
	QMutex mutex;
	QList<QMap<long long, long long>> xSdkList; //单播放器

	QList<QList<PlayVideoInfo>> sdkList; //多播放器

	CHaiKangControl *haikang = nullptr;
protected:
	void run();
};

	if (!m_playVideoInfo.isEmpty())
	{
		DeleteSdkThread *deleteSdkThread = new DeleteSdkThread;
		deleteSdkThread->addToSdkInfo(m_playVideoInfo);
	}

Guess you like

Origin blog.csdn.net/vcit102/article/details/130385367