Производительность InterlockedPushEntrySList

Я тестирую WinAPI InterlockedPushEntrySList
но мой результат теста немного странный.

Я думал, в основном в LockFree, скорость нажатия будет быстрее при увеличении потока.
потому что один поток добьется успеха по крайней мере.
в моем тесте как поток увеличить скорость InterlockedPushEntrySList медленнее.

мой тест был очень прост. просто выполняйте push-поведение в многопоточности.
Я устранил все еще один фактор, который вызвал мисс тест.

нить 1: 138 075 326
нить 2: 131 584 007
нить 3: 90,196,884
там 4: 82 699 521

Это счет толчка в течение 5 секунд

Скажите, пожалуйста, почему. ㅠ
Никто не проверял это?

0

Решение

Я думал, в основном в LockFree, скорость нажатия будет быстрее, чем поток
увеличение.

Если бы это было так, мы бы все написали код без блокировки и запустили бы тысячи потоков с бесконечной скоростью, не так ли?

«Без блокировки» означает, что алгоритм не будет использовать блокировку для достижения синхронизации, а вместо этого использует атомарные операции (наиболее заметный цикл CAS).

Это не означает, что алгоритм без блокировки будет работать быстрее, чем алгоритм без блокировки (обычно это происходит).

Это не означает, что блокировка освобождается медленнее или быстрее в зависимости от количества потоков (обычно это становится медленнее с увеличением числа потоков)

В вашем случае, поскольку потоков больше, им придется «драться» сильнее, чтобы добиться успеха в своей работе, как правило, в случае многопоточного кода. чем больше вы делитесь между потоками и тем больше их существует — конфликт будет ухудшать вашу производительность. без блокировки мая легкость проблема, но не решать Это

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]