Answers in Initializing private static members say that the private static member should be initialized in the source file.
Hence, this is what I tried:
.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QApplication>
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/syscall.h>
#include <iostream>
#include <QDebug>
class MainWindow : public QMainWindow
{
    Q_OBJECT
    static pthread_mutex_t mutexVariable;
    static pthread_cond_t  conditionVariable;
    static QList <int> queueLIFO;
public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
    static void *producerThreadFunction (void *arg);
    static void *consumerThreadFunction (void *arg);
    int start ();
};
#endif // MAINWINDOW_H
and .cpp
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    MainWindow::mutexVariable     = PTHREAD_MUTEX_INITIALIZER;
    MainWindow::conditionVariable = PTHREAD_COND_INITIALIZER;
}
error: undefined reference to `MainWindow::mutexVariable'
error: undefined reference to `MainWindow::conditionVariable'
I also tried this:
#include "mainwindow.h"
MainWindow::mutexVariable     = PTHREAD_MUTEX_INITIALIZER;
MainWindow::conditionVariable = PTHREAD_COND_INITIALIZER;
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
}
It resulted in:
error: 'pthread_mutex_t MainWindow::mutexVariable' is private static pthread_mutex_t mutexVariable;// = PTHREAD_MUTEX_INITIALIZER; ^
 
     
     
     
    