Первоначально моя функция-производитель просто записывала данные, теперь у меня есть второй поток, который отвечает за запись данных. Функция производителя делает memcpy
в кольцевой буфер и запускает поток потребителя, чтобы начать запись.
Когда я использую двухпоточную схему, я получаю желаемую изоляцию потока, стабильность программы и возможность вычисления переменных перед записью — но производительность ввода-вывода на 50% хуже.
Моя теория заключается в том, что для каждого потока можно установить какой-то приоритет, который я хочу настроить. Это возможно.
Я использую 2 SSD в конфигурации разборки данных RAID0.
Что вы подразумеваете под «производительность на 50% хуже»? Согласно вашему монитору ресурсов, он настолько высок, насколько это возможно: очередь на диск заполнена, время активности диска составляет 100%. Если вы имеете в виду скачки скорости записи — они не имеют никакого отношения к какому-либо возможному приоритету потока. Они вызваны позиционированием головки диска из-за фрагментации файлов, модификации таблицы fs и так далее.
Других решений пока нет …