LINUX.ORG.RU

История изменений

Исправление KivApple, (текущая версия) :

Ты можешь выделить память под кадр в потоке без блокировок, записать туда кадр, а потом положить в очередь просто указатель (и договориться, что в этом потоке больше не трогаешь его). Другой поток достаёт указатель из очереди, пишет его содержимое на диск и освобождает память.

Так вот, блокировка будет только на время чтения/записи в очередь 4/8 байт. Эта операция занимает наносекунды для любой вменяемой реализации очереди на любом вменяемом процессоре. Один кадр у тебя приходит раз в 33 миллисекунд.

Где ты нашёл неравномерность?

Исправление KivApple, :

Ты можешь выделить память под кадр в потоке без блокировок, записать туда кадр, а потом положить в очередь просто указатель (и договориться, что в этом потоке больше не трогаешь его). Другой поток достаёт указатель из очереди, пишет его содержимое на диск и освобождает память.

Так вот, блокировка будет только на время чтения/записи в очередь 4/8 байт. Эта операция занимает наносекунды для любой вменяемой реализации очереди. Один кадр у тебя приходит раз в 33 миллисекунд.

Где ты нашёл неравномерность?

Исходная версия KivApple, :

А что там долгого, чтобы это на что-то влияло?

Ты можешь выделить память под кадр в потоке без блокировок, записать туда кадр, а потом положить в очередь просто указатель (и договориться, что в этом потоке больше не трогаешь его). Другой поток достаёт указатель из очереди, пишет его содержимое на диск и освобождает память.

Так вот, блокировка будет только на время чтения/записи в очередь 4/8 байт. Эта операция занимает наносекунды для любой вменяемой реализации очереди. Один кадр у тебя приходит раз в 33 ммиллисекунд. Где ты нашёл неравномерность?