/ / mutex vs. spin lock, когато броят на нишките = хардуерно успоредно - мултитъч, синхронизация, mutex, spinlock

mutex vs. spin lock, когато броят на нишките = хардуерния паралелизъм - мултитъч, синхронизация, mutex, spinlock

помислете за програма с оптимално броене на нишкикойто работи на специален сървър, така че ако една нишка е заключена там няма други (почти) чакат CPU time.do spin заключване осигуряват по-добра производителност от mutex във всички възможни случаи при такива обстоятелства?

[EDIT] някои обяснения: тъй като няма никакво твърдение за времето на процесора между нишките, нишката може да използва шпионска блокировка без да окаже влияние върху други характеристики на конеца и блокирането на въртенето не превключва към режим на изчакване, който може да бъде достатъчно тежък (поне при Windows, той изпълнява на linux)

Отговори:

1 за отговор № 1

Вашата предпоставка не е много реалистична Вашият процесът има оптималния брой нишки, а останалата част на операционната система има много стотици друг конци. Някои от тях може да са готови да работят и с радост ще вземете сърцевината на процесора, когато нишката ви добие. Освен това, ако нишката е на път да бъде блокирана, вероятно ще се случи поради заключване, поддържано от една от другите нишки във вашия процес. Кое може да го пусне по време на времето на изчакване. Броят на темите не е релевантен за това. По този начин все още има смисъл да се върти.


0 за отговор № 2

Мисля, че spinlock ще работи по-добре в товаслучай, mutexe "и не са наистина необходими, освен ако не се опитвате да оптимизирате вашия код и това зависи от различни времена за I / O и т.н. ... Вие също направи добра точка за режим на изчакване.


0 за отговор № 3

Spinlock вероятно ще бъде по-оптимален, тъй като няма преход към ядрото. Но сценарият е толкова измислен, че предлагам никога да не се опитвате да го приложите към реалния живот.