2011-07-16 5 views
3

Мы создаем чувствительное к задержкам приложение. Наше полное приложение занимает около 2500 тактов в процессе, кроме блокировки, и есть два замка, которые необходимо приобрести и отпустить. Мы не ожидаем конкуренции 99,98% времени. Использование блокировки и разблокировки pthread занимает около 1800 дополнительных циклов. Любые указатели в более быстрых рецептурах? Написание блокировок на основе атомных операций может быть сложным. Мы предпочли бы использовать стандартный код, как в заголовках Linux, или, если это возможно, заголовки заголовков.Более быстрый замок, чем pthreads

+0

Если это почти неконфликтная ситуация, вы должны сначала попытаться включить блокировку, они лучше блокировки (в определенной ситуации, так как это предотвратит переход потоков в состояние блокировки). Атомные операции также являются хорошим выбором, но использовать их сложно. Главным образом атомная операция используется в программах масштабируемости. – peeyush

+0

Кстати, как вы профилировали свой код таким образом? – peeyush

+0

Пробовал pthread_spinlock. ABout на 40% меньше времени вне контекста, но все равно слишком много. Я могу попытаться изучить атомные операционные системы в http://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/Atomic-Builtins.html#Atomic-Builtins, но этот материал может быть сложным. –

ответ

1

Вы не слишком много вариантов. Библиотека Pthread является как можно более общей. Если вы сделаете это более конкретным, меньшее число людей будет использовать его, таким образом, каждый в конечном итоге реализует свои собственные, делая беспорядок.

Я боюсь, что вам придется писать свои собственные, которые специально соответствуют вашим требованиям. Я бы предположил, что это так: http://kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook.html

Я читаю его сам.

Смежные вопросы