Маршалинг.NET универсальные типы

Я думаю Linux / Unix не использует ту же механику блокировки, потому что они создаются с нуля как многопользовательская система - который ожидал бы возможность многочисленных пользователей, использующих тот же файл, возможно, даже в различных целях.

там преимущество для блокировки? Ну, это могло возможно уменьшить сумму указателей, которыми должна будет управлять ОС, но теперь дни сумма сбережений довольно незначительна. Самое большое преимущество, о котором я могу думать к блокировке, является этим: Вы сохраняете некоторую просматриваемую пользователем неоднозначность. Если пользователь выполняет двоичный файл, и пользователь b удаляет его, то фактический файл должен слоняться поблизости, пока процесс пользователя A не завершается. Все же, если Пользователь B или какие-либо другие пользователи будут считать файловую систему для него, они не будут в состоянии найти его - но это продолжит занимать место. Едва ли огромное беспокойство мне.

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

9
задан Gabriel 17 October 2009 в 17:24
поделиться

2 ответа

Универсальные шаблоны, как правило, не поддерживаются ни в одном сценарии взаимодействия. И P / Invoke, и COM-взаимодействие завершатся ошибкой, если вы попытаетесь маршалировать универсальный тип или значение. Следовательно, я ожидаю, что Marshal.SizeOf не будет протестирован или не поддерживается для этого сценария, поскольку это функция, специфичная для маршала.

9
ответ дан 4 December 2019 в 21:50
поделиться

Неизвестно, какой размер будет у агрегированного объекта T (это будет размер указателя, если T является ссылочным типом, и в основном любое значение, если это тип значения).

Я думаю, вы можете решить эту проблему, установив атрибут MarshalAs в поле «значение», указав наиболее подходящий тип (например, Unmanagedtype.SysInt). Обратите внимание, что он по-прежнему не будет работать для так называемых неотображаемых типов (т.е. типов, для которых смещения и размеры полей не могут быть легко определены).

Но, AFAIK, не рекомендуется использовать универсальные шаблоны во взаимодействии.

0
ответ дан 4 December 2019 в 21:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: