MethodInfo method = delegateType.GetMethod("Invoke");
Console.WriteLine(method.ReturnType.Name + " (ret)");
foreach (ParameterInfo param in method.GetParameters()) {
Console.WriteLine("{0} {1}", param.ParameterType.Name, param.Name);
}
См. этот вопрос SO : естественное выравнивание важно для производительности и требуется в архитектуре x64 (так что это не только системы PRE-x86, но и системы POST-x86. тоже - x64 все еще может быть немного нишевым случаем, но в конце концов его популярность растет ;-); может быть, поэтому Microsoft документирует это как требуется (трудно найти документы о том, решила ли MS ПРИНУДИТЬ проблему выравнивания, включив проверку выравнивания - это может варьироваться в зависимости от версии Windows; заявив в документах, что выравнивание требуется, MS сохраняет свобода принудительного применения этого параметра в одной версии Windows, даже если они не применяли его принудительно в других).
API-интерфейсы Microsoft Interlocked также применимы к ia64 (пока она еще существовала). На ia64 не было префикса блокировки, только инструкции cmpxchg.acq и cmpxchg.rel (или fetchadd и другие подобные чудовища), и все они требовали выравнивания, если я правильно помню.