Qt и C ++ в общем имеют общие переменные static
.
пример использования:
//Class where data is stored:
class SharedData {
static QMutex sMutex;
static unsigned char* spDataPointer;
signals: void pass_test(unsigned char** address);
}
//Access from from thread:
SharedData::spDataPointer = (unsignedchar*) mmap(NULL, lenth, PROT_WRITE|PROT_READ, MAP_SHARED, trigger_fd, offset);
emit SharedData::pass_test(&SharedData::spDataPointer);
Но есть и другой подход к вашей реализации.
Вам не нужно использовать совместно используемую переменную, просто используйте сигналы и слоты Qt:
Подключите slot
к вашему pass_test
signal
по Qt::QueuedConnection
.
Таким образом, когда вы инициализируете указатель, просто подайте сигнал, чтобы отправить его в основной поток. Главный поток получит ваш указатель обработать его безопасно.
Для получения дополнительной информации о QThread show эта статья .
Для получения дополнительной информации о Qt Signals и Slots покажите эту статью .