Russian Qt Forum
Май 04, 2024, 05:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: QList в качестве буфера  (Прочитано 12114 раз)
Ubuntu_linux
Гость
« Ответ #15 : Июнь 26, 2013, 17:05 »

Здесь опечатка? Или вы действительно пытаетесь удалить первый элемент, когда список пуст?


Где пропал ! , я же ставил....
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #16 : Июнь 26, 2013, 17:21 »

Но как я понял операция append() и removeFirst() имеют встроенный мютекс и дополнительно можно не использовать сторонние мютексы или нет?
Мне неизвестен ни один контейнер ни в std:: ни в Qt который имел бы встроенный мутекс. Все эти контейнеры "потоко-опасны" и засисяться нужно самому.

Можно ли использовать QList в качестве буфера для бинарных данных(25-30 айтемов)? или посоветуете альтернативу?
На таком порядке данных (25-30) достоинства контейнера особого значения не имеют. А если сам айтем хоть сколько-то приличный (32 байтв и более) то вообще QList - хороший, а может и лучший выбор
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #17 : Июнь 26, 2013, 17:22 »

Где пропал ! , я же ставил....
Попробуйте использовать вместо ручного управления мютексами (lock/unlock) - QMutexLocker.
IMHO, где-то у вас с синхронизацией проблема.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #18 : Июнь 26, 2013, 17:23 »

Мне неизвестен ни один контейнер ни в std:: ни в Qt который имел бы встроенный мутекс.
Это потому, что они не могут существовать. Улыбающийся
Записан
Ubuntu_linux
Гость
« Ответ #19 : Июнь 26, 2013, 23:48 »

Ну вродебы весь геморрой из за указателей при большой скорости обмена в вдох потоках.
Записан
Bepec
Гость
« Ответ #20 : Июнь 27, 2013, 06:47 »

Маленькая поправка - для программы не существует "большой скорости обмена". Если у неё нормальная архитектура, тогда будет работать. Если ненормальная - печаль и проблемы Показает язык

PS используйте мутексы и не парьтесь.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #21 : Июнь 27, 2013, 07:01 »

Маленькая поправка - для программы не существует "большой скорости обмена".
Еще как существует

Ну вродебы весь геморрой из за указателей при большой скорости обмена в вдох потоках.
Это легко проверить - напр на OSX утилита покажет overhead на диаграмме процессоров. На др платформах тоже должны быть такие средства. Но причиной может быть неправильная синхронизация или ее отсутствие (у Вас я пока не вижу как нитку будите).
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #22 : Июнь 27, 2013, 07:21 »

Ну вродебы весь геморрой из за указателей при большой скорости обмена в вдох потоках.
Показывайте ваши потоки без основной работы, но с синхронизацией.
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #23 : Июнь 28, 2013, 13:32 »

Какой метод лучше?
В данном случае (QList) все равно. Даже при использовании второго варианта, QList будет хранить указатели, а не сами объекты.

а может всё-таки копии объектов?
Записан

kubuntu/Win7/x64/NetBeans
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #24 : Июнь 28, 2013, 13:47 »

а может всё-таки копии объектов?
Хорошо. Указатели на копии объектов. :-)
Но здесь ключевой момент - указатели.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 23.