Здравствуйте, гость ( Вход | Регистрация )
|
AXELman4ever |
27.10.2011, 12:21
Сообщение
#1
|
|
Студент ![]() Группа: Участник Сообщений: 31 Регистрация: 22.9.2011 Пользователь №: 2902 Спасибо сказали: 0 раз(а) Репутация: 0
|
Добрый день!
Уважаемые, не пинайте сильно если подобные темы уже возникали (в поиске не натыкался). В первую очередь признаюсь - каких либо глубоких познаний в потоках не имею, но работаю над этим. Посему хочу просить помощь в просвещении того как ораганизовать подобную связку. 1-ое: Имеется 2 дочерних потока ("вытекающие" из мейн потока). Цель такова: 1 поток должен заносить значения в карту (QMap), 2 поток должен эти значения cчитывать. То есть, осуществляется общение (если концепция этого слова мне ясна) между потоками. Подскажите пожалуйста, есть ли QMap потокобезопасным, и как привязать эти потоки к общему(глобальному) экземпляру QMap чтобы достигнуть поставленной цели. 2-ое: Так же буду благодарен, если кто-нибудь предоставит мне не большой пример, по работе с одной общей переменой (к примеру с int'ом) из двух потоков - 1 поток пишет значение, 2-ой - читает его. Я так понимаю - здесь необходимо задействовать мютекс. Всё что я знаю, так это то, что переменная не может иметь спецификатор static, по скольку это не безопасно (но я не понимаю почему). UDP: Как вести общение между потоками посредством сигнал/слот я понимаю(по крайней мере мне так кажется Какие еще существуют средства обмена данными между потоками в QT, если не брать во внимание наличие механизма сигнал/слот? Объясните пожалуйста кому не сложно. Читал кучу инфы, перелопатил много гугла, но везде только примитивные малоинформативные примеры и практически никакого объяснения. Заранее благодарен |
|
|
|
![]() |
|
wiz29 |
27.10.2011, 14:28
Сообщение
#2
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12
|
1. QMap не потокобезопасен. Делай класс обертку для QMap, которая будет потокобезопасной.
"Какие еще существуют средства обмена данными между потоками в QT, если не брать во внимание наличие механизма сигнал/слот?" - QEvent, QSharedMemory |
|
|
|
AXELman4ever QMap + QThread 27.10.2011, 12:21
AXELman4ever Цитата(wiz29 @ 27.10.2011, 14:28) 1. QMap... 27.10.2011, 15:20
AXELman4ever Цитата(AXELman4ever @ 27.10.2011, 15:20) ... 27.10.2011, 16:04
ssoft Например, что-то такое
template< typename _Ke... 27.10.2011, 17:40
AXELman4ever Цитата(ssoft @ 27.10.2011, 17:40) Наприме... 27.10.2011, 18:55
ssoft Цитата(AXELman4ever @ 27.10.2011, 19:55) ... 28.10.2011, 8:13
AXELman4ever Цитата(ssoft @ 28.10.2011, 8:13) PS. Жмем... 28.10.2011, 9:42
AXELman4ever А у меня еще вопрос:
Если не залочить insert() ме... 30.10.2011, 6:31
ssoft Цитата(AXELman4ever @ 30.10.2011, 7:31) А... 31.10.2011, 7:46
AXELman4ever Цитата(ssoft @ 31.10.2011, 7:46) Если обр... 31.10.2011, 13:47
ssoft Цитата(AXELman4ever @ 31.10.2011, 14:47) ... 31.10.2011, 13:53
AXELman4ever 1:
Уточню:
QMap принадлежит только главному пото... 31.10.2011, 19:11
ssoft В такой реализации скрыта серьезная ошибка.
Правда... 1.11.2011, 8:46
AXELman4ever Премного благодарен за толковое разъяснение.
1. ... 1.11.2011, 13:33
ssoft Цитата(AXELman4ever @ 1.11.2011, 14:33) ... 1.11.2011, 16:45
AXELman4ever ЦитатаОпасность в одновременном не синхронизирован... 1.11.2011, 18:23
ssoft Начиналось все с того, что
Цитата(AXELman4ever ... 2.11.2011, 17:17
AXELman4ever Замечательно, вижу свет в конце тоннеля За что, ... 2.11.2011, 23:13
ssoft Цитата(AXELman4ever @ 3.11.2011, 0:13) То... 3.11.2011, 7:45
AXELman4ever Цитата(ssoft @ 3.11.2011, 7:45) Например,... 3.11.2011, 11:28![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 14.12.2025, 9:01 |