| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > потокобезопасная очередь |
| Автор: xbarmaglot 4.10.2016, 13:22 |
| нужна потокобезопасная очередь с ожиданием и отказами. очередь должна быть с ограничением по размеру. видел реализацию на QReadWriteLock и семафоре. А стандартное есть что-нибудь? еще бы хотелось прерывать ожидание по требованию |
| Автор: Sajtran 5.10.2016, 11:49 |
| каждый лепит как может, подходов много в вашем случае очередь фиксированного размера - циклический буфер + нужно делать ожидание освобождения места в очереди ( +Event) потокобезопасность - обычный Lock будут проблемы со скоростью - будете думать (война план покажет) Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/potokobezopasnaya-ochered-id57f38342adbd5f15904a76b2#findElement_E7045_57f4bea186c4c53afb365641_0 |
| Автор: Sajtran 5.10.2016, 11:49 |
| каждый лепит как может, подходов много в вашем случае очередь фиксированного размера - циклический буфер + нужно делать ожидание освобождения места в очереди ( +Event) потокобезопасность - обычный Lock будут проблемы со скоростью - будете думать (война план покажет) Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/potokobezopasnaya-ochered-id57f38342adbd5f15904a76b2#findElement_E7045_57f4bea186c4c53afb365641_0 |
| Автор: Sajtran 5.10.2016, 11:49 |
| каждый лепит как может, подходов много в вашем случае очередь фиксированного размера - циклический буфер + нужно делать ожидание освобождения места в очереди ( +Event) потокобезопасность - обычный Lock будут проблемы со скоростью - будете думать (война план покажет) Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/potokobezopasnaya-ochered-id57f38342adbd5f15904a76b2#findElement_E7045_57f4bea186c4c53afb365641_0 |
| Автор: Sajtran 5.10.2016, 11:49 |
| каждый лепит как может, подходов много в вашем случае очередь фиксированного размера - циклический буфер + нужно делать ожидание освобождения места в очереди ( +Event) потокобезопасность - обычный Lock будут проблемы со скоростью - будете думать (война план покажет) Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/potokobezopasnaya-ochered-id57f38342adbd5f15904a76b2#findElement_E7045_57f4bea186c4c53afb365641_0 |
| Автор: Sajtran 5.10.2016, 11:49 |
| каждый лепит как может, подходов много в вашем случае очередь фиксированного размера - циклический буфер + нужно делать ожидание освобождения места в очереди ( +Event) потокобезопасность - обычный Lock будут проблемы со скоростью - будете думать (война план покажет) Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/potokobezopasnaya-ochered-id57f38342adbd5f15904a76b2#findElement_E7045_57f4bea186c4c53afb365641_0 |
| Автор: _GRIN_ 16.12.2016, 12:52 |
| Если можно в угоду быстродействию пожертвовать памятью, то можно держать две очереди. Одна доступна извне, вторая изнутри потока. Переключение между ними через atomic int (QAtomicInt), после переключения не забыть синхронизовать их. Иначе обынчый QMutex (lock/read-write/unlock). |