#linux #multithreading #pthreads #mutex #rwlock
#linux #многопоточность #pthreads #мьютекс #rwlock
Вопрос:
Я реализовал sorted linked list
в виде двух версий. Первый использует single mutex
для всего списка, а второй использует single rwlock
для всего списка.
Я выполнил половину операций as Member
, а другая половина состояла из операций Insert(0.25)
и Delete(0.25)
. Я сопоставил время с несколькими потоками, и в этом случае ожидалось, что время для rwlock
было выше, чем mutex
.
Как это может произойти? Когда количество операций с членами превышает 90%, rwlocks
все было лучше, как и ожидалось.
Комментарии:
1. Ваша проблема относится к другому месту во вселенной SO. Выберите свою планету здесь . При переносе … опубликуйте также некоторый минимальный код в качестве тестового примера.
2. «Могут ли накладные расходы rwlock быть выше, чем накладные расходы mutex?» — Да, может.
rwlock
реализует более сложные ограничения, чем простыеmutex
, поэтому он может потреблять больше памяти. Не уверен, что такое «Я выполняю половину операций какMember
«, но вставка и удаление элементов из списка являются операциями мутации, и они выполняются исключительно как сmutex
, так и сrwlock
. Почему вы ожидаетеrwlock
, что в этом случае вы покажете лучшие результаты?3. @Tsyvarev не могли бы вы, пожалуйста, ознакомиться с сюжетами здесь и объяснить ситуацию.
4. Хм, я не уверен, почему первый комментатор предлагает задать вопрос на другом сайте Stack Exchange. Насколько я понимаю, вопрос определенно относится к программированию и относится к Stack Overflow. Вы предлагаете изучить графики, но вы все еще не описываете, что означают «операции как
Member
«. Пожалуйста, обновите свой вопрос более подробной информацией.5.
Member
означает поиск в списке заданного целого числа путем обхода списка, начиная с первого узла. ОперацииDelete
иInsert
выполняют тот же обход и удаляют узел, если он найден, или вставляют новый узел в правильное положение в отсортированном списке.