Название: Доступ из разных потоков к объектам типа QList :help: Отправлено: yesrus от Сентябрь 26, 2009, 15:37 Здравствуйте! Вообщем проблема в следующем:
Есть структуры+пара переменных: Код Как сделать так, чтобы они были доступны из разных потоков ? т.е. чтобы можно было изменить или прочитать\записать данных в них из разных потоков, так же интересует как переделать их в класс. Почитал про глобальные переменные, но если объявить их глобально то qt ругается, так же не понятно как сделать аналог disks[10] - если структуру dsk объявить не структурой, а классом(имя класса к примеру myclass) - myclass[10] -правильно ли это? Возможно ли сделать динамическую структуру...т.е. без указания начально размера (10) ? Заранее спасибо за помощь! qt 4.5, windows xp sp3. Название: Re: Доступ из разных потоков к объектам типа QList :help: Отправлено: yesrus от Сентябрь 26, 2009, 16:03 Небольшое дополнение: все это нужно, чтобы передать данные между потоками - я могу сделать это с помощью сигналов, но не могу понять как передать QList типа QList<songs> slist где songs - структура - как объявить этот qlist в дочернем потоке, чтобы потом через сигнал можно было его передать ? И вообще как передать любой объект типа QList с помощью сигнала ?
Название: Re: Доступ из разных потоков к объектам типа QList :help: Отправлено: yesrus от Сентябрь 26, 2009, 16:42 help....передавать из другого потока сигналами 1000+ переменных не айс.... :(
Название: Re: Доступ из разных потоков к объектам типа QList :help: Отправлено: BlackTass от Сентябрь 26, 2009, 20:14 Толи у меня под конец субботы плохо с понималкой толи еще что-то, но я не понял в чем проблема.
В передаче кулиста в сигнале? Должен нормально передаваться, но не забудьте зарегестрировать такой тип, чтобы куте о нем знал. В этом поможет метод qRegisterMetaType<TypeName>("TypeName"). В синхронизации данных между потоками? В этом случае вам поможет QMutex, либо другие средства синхронизации. Название: Re: Доступ из разных потоков к объектам типа QList :help: Отправлено: SimpleSunny от Сентябрь 26, 2009, 22:41 Для хранения переменных можно сделать некий класс хранилище, в котором уже и заботится о защите данных (QMutex, QReadWriteLock, /etc). Этот класс создается перед запуском потоков, а в потоки просто передаем ссылку на класс с уже заполнеными данными.
Код
Название: Re: Доступ из разных потоков к объектам типа QList :help: Отправлено: yesrus от Сентябрь 26, 2009, 22:57 А как передать ссылку на класс в потоки ? И где его создавать этот класс ? (по дефолту есть mainwindow класс, он основной).
|