Здравствуйте, сипласплас, Вы писали:
E>>Но, на двух ядрах оказывается, что стоимость переключения контекста между нитью-обработчиком и нитью ACE_Reactor-а слишком высока, чтобы передавать входящий/исходящий трафик через очереди сообщений.
С>При чем здесь это? Чем оно дороже чем на одноядерной машине?
Дороговизна не в переключениях, а в атомарных операциях.
Комплект функций синхронизации — атомарные операции, мьютексы-шмютексы — предоставляемый операционной системой приложению, различается для одно- и многоядерных систем.
На 1 ядре atomic_xxx — это
— запретить прерывания — чтобы планировщик не вломился и не вытеснил поток
— выполнить операцию
— разрешить прерывания
А на многоядерном — это
— запретить прерывания
— заблокировать память — чтобы остальные ядра туда не выстрелили
— выполнить операцию
— разблокировать память
— разрешить прерывания
То есть, во-первых, танец становится длиннее, а во-вторых, он становится сольным.
Атомарная операция как-бы выполняется сразу во всех ядрах (в родном — содержательно, в остальных — вхолостую).
... << RSDN@Home 1.2.0 alpha rev. 655>>