//work.h
#ifndef WORK_H
#define WORK_H
#include <QObject>
#include <QVector>
#include <QThread>
struct Node
{
int key, val;
Node *next;
Node(int key = 0, int val = 0, Node *next = NULL)
: key(key), val(val), next(next) {}
};
class MyThread : public QThread
{
Q_OBJECT
public:
explicit MyThread(int key, QObject *parent = 0);
~MyThread();
static Node *mergeSort(Node *p, int n);
static Node *merge(Node *p, Node *q);
Node *head() const { return _first; }
int key;
protected:
void run();
private:
Node *_first;
int _size;
};
#endif // WORK_H
//work.cpp
#include "work.h"
#include <QMutex>
#include <QMutexLocker>
#include <QDebug>
#define N 10000000
extern QMutex mutex[4];
extern Node *first[4];
MyThread::MyThread(int key, QObject *parent)