Быстрее, чем блокировка - PullRequest
3 голосов
/ 16 июля 2011

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

Ответы [ 2 ]

2 голосов
/ 21 июля 2011

В качестве рекомендации попробуйте spin_mutex из библиотеки Intel Threading Building Blocks . Это с открытым исходным кодом (GPLv2), так что вы также можете проверить источники для деталей реализации.

Также вы можете посмотреть на это: Является ли моя реализация спин-блокировки правильной и оптимальной?

1 голос
/ 20 июня 2012

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

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

Я читаю это сам.

...