Потоконезависимые очереди, реализация |
Здравствуйте, гость ( Вход | Регистрация )
Потоконезависимые очереди, реализация |
AD |
7.11.2011, 10:28
Сообщение
#1
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Есть ли в библиотеках Qt, boost реализация потоконезависимых очередей? Можно ли применить QList? Если нет, есть ли в инете подобное? Поискал сам, пока ничего путного не видел. Может быть кто-то уже видел что-то подобное?
|
|
|
BRE |
7.11.2011, 11:44
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Что имеется ввиду под "потоконезависимые"?
QList использовать можно, если к одному экземпляру списка нужен доступ на запись из разных потоков, то придется использовать механизмы синхронизации. Что вообще требуется от этой очереди? |
|
|
AD |
7.11.2011, 12:02
Сообщение
#3
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Что имеется ввиду под "потоконезависимые"? QList использовать можно, если к одному экземпляру списка нужен доступ на запись из разных потоков, то придется использовать механизмы синхронизации. Что вообще требуется от этой очереди? Насколько я понимаю, под потоконезависимыми подразумевается, скорее всего, когда механизм синхронизации происходят внутри реализации очереди, хотя я лично смутно это себе представляю. Но такое в принципе возможно, когда синхронизация происходит внутри реализации? |
|
|
BRE |
7.11.2011, 12:23
Сообщение
#4
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
AD |
7.11.2011, 12:45
Сообщение
#5
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Конечно возможно. Но для этого нужно определиться какими свойствами эта очередь должна обладать. Например, что за свойства такие особенные? Насколько я знаю, ее определение из вики вполне оправдывает все ее особенности: Цитата О́чередь — структура данных с дисциплиной доступа к элементам «первый пришёл — первый вышел» (FIFO, First In — First Out). Добавление элемента (принято обозначать словом enqueue — поставить в очередь) возможно лишь в конец очереди, выборка — только из начала очереди (что принято называть словом dequeue — убрать из очереди), при этом выбранный элемент из очереди удаляется. Ну а то, что реализация может быть на связном списке, на массиве или еще как-то, то это я знаю! |
|
|
Iron Bug |
7.11.2011, 12:45
Сообщение
#6
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
в бусте есть библиотека intrusive - там реализованы потокобезопасные на определённом уровне (http://www.boost.org/doc/libs/1_46_0/doc/h...ead_safety.html) контейнеры указателей. удобная и исключительно быстрая штука. но тоже не всё полностью.
кроме того, есть interprocess, там реализовано множество разных контейнеров для обмена между процессами, но можно юзать где угодно. это медленее и, вообще говоря, неявно включает работу с файлами. Сообщение отредактировал Iron Bug - 7.11.2011, 12:49 |
|
|
BRE |
7.11.2011, 13:09
Сообщение
#7
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Например, что за свойства такие особенные? Опиши, как ты с ней будешь работать из разных потоков? Например, один поток помещает в очередь задания, а несколько других потоков их вынимают и выполняют или несколько потоков туда помещают данные, а один поток их сохраняет в базу, или... |
|
|
Алексей1153 |
7.11.2011, 13:17
Сообщение
#8
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
без синхронизации никуды )
|
|
|
AD |
7.11.2011, 13:31
Сообщение
#9
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
|
|
|
BRE |
7.11.2011, 13:50
Сообщение
#10
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
На соседнем форуме обсуждали. Одна из тем: http://www.prog.org.ru/index.php?topic=144...g95463#msg95463
|
|
|
Текстовая версия | Сейчас: 30.11.2024, 6:15 |