Сообщение Re[2]: Критическая секция, как совсем отключить spin count от 19.02.2019 12:00
Изменено 19.02.2019 12:22 Alexander G
Re[2]: Критическая секция, как совсем отключить spin count
Здравствуйте, Nuzhny, Вы писали:
N>Давно уже не трогал WinAPI, но что такое SpinCount?
Если ресурс занят, то перед тем, как ждать в ядре, может быть предпринято некоторое количество попыток проверить, не освободился ли ресурс.
На многопроцессорных/многоядерных системах и для занимаемых на непродолжительное время ресурсов это может улучшить перформанс.
Для продолжительно занимаемых ресурсов от такого больше вреда, чем пользы.
На однопроцессорных/одноядерных системах это бесполезно, и оно не включается.
В книге Рихтера тема раскрыта и в одкументации той же InitializeCriticalSectionAndSpinCount.
N>Тип у него ULONG_PTR, что больше похоже на указатель, чем на значение.
Оно там для вырванивания с /Za1, даже комментарий есть, значение явно в младшей части спин каунт.
N>Давно уже не трогал WinAPI, но что такое SpinCount?
Если ресурс занят, то перед тем, как ждать в ядре, может быть предпринято некоторое количество попыток проверить, не освободился ли ресурс.
На многопроцессорных/многоядерных системах и для занимаемых на непродолжительное время ресурсов это может улучшить перформанс.
Для продолжительно занимаемых ресурсов от такого больше вреда, чем пользы.
На однопроцессорных/одноядерных системах это бесполезно, и оно не включается.
В книге Рихтера тема раскрыта и в одкументации той же InitializeCriticalSectionAndSpinCount.
N>Тип у него ULONG_PTR, что больше похоже на указатель, чем на значение.
Оно там для вырванивания с /Za1, даже комментарий есть, значение явно в младшей части спин каунт.
typedef struct _RTL_CRITICAL_SECTION {
...
ULONG_PTR SpinCount; // force size on 64-bit systems when packed
} RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION;
Re[2]: Критическая секция, как совсем отключить spin count
Здравствуйте, Nuzhny, Вы писали:
N>Давно уже не трогал WinAPI, но что такое SpinCount?
Если ресурс занят, то перед тем, как ждать в ядре, может быть предпринято некоторое количество попыток проверить, не освободился ли ресурс.
На многопроцессорных/многоядерных системах и для занимаемых на непродолжительное время ресурсов это может улучшить перформанс.
Для продолжительно занимаемых ресурсов от такого больше вреда, чем пользы.
На однопроцессорных/одноядерных системах это бесполезно, и оно не включается.
В книге Рихтера тема раскрыта и в одкументации той же InitializeCriticalSectionAndSpinCount.
N>Тип у него ULONG_PTR, что больше похоже на указатель, чем на значение.
Оно там для выравнивания с /Za1, даже комментарий есть:
Значение явно в младшей части спин каунт.
N>Давно уже не трогал WinAPI, но что такое SpinCount?
Если ресурс занят, то перед тем, как ждать в ядре, может быть предпринято некоторое количество попыток проверить, не освободился ли ресурс.
На многопроцессорных/многоядерных системах и для занимаемых на непродолжительное время ресурсов это может улучшить перформанс.
Для продолжительно занимаемых ресурсов от такого больше вреда, чем пользы.
На однопроцессорных/одноядерных системах это бесполезно, и оно не включается.
В книге Рихтера тема раскрыта и в одкументации той же InitializeCriticalSectionAndSpinCount.
N>Тип у него ULONG_PTR, что больше похоже на указатель, чем на значение.
Оно там для выравнивания с /Za1, даже комментарий есть:
typedef struct _RTL_CRITICAL_SECTION {
...
ULONG_PTR SpinCount; // force size on 64-bit systems when packed
} RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION;
Значение явно в младшей части спин каунт.