То, почему является единственным мой Winforms-размещенный сервис WCF, распараллелило?

Несколько мыслей:

  • Старые наборы инструкций будут проще, поэтому они могут быть хорошим местом для начала.
  • Выберите архитектуру RISC: декодирование потока команд будет намного проще.
  • Игнорировать такие вещи, как прерывания, NMI и т. Д.
  • В точной эмуляции загрузки всегда есть много мелких деталей. Вместо этого выберите что-то очень простое, например, запуск выполнения с нулевого адреса со всеми регистрами, установленными на ноль.
  • Настоящим программам также понадобятся такие вещи, как настоящая аппаратная эмуляция, так что не делайте этого.
  • Возможно, вы захотите расширить набор инструкций несколькими специальными инструкциями ввода-вывода, чтобы прочитать число, написать символ (или даже строку) и т. Д., Чтобы вы могли писать простые тестовые программы, которые на самом деле очень простой ввод / вывод.
  • Разбор формата объектного файла, такого как elf, может потребовать много работы сам по себе. С такими инструментами, как objdump, вы, вероятно, можете извлечь только текстовый раздел (то есть инструкции) как двоичный файл (по крайней мере, ascii hex).
  • Начните с написания дизассемблера для любого набора команд, который вы хотите эмулировать, или, по крайней мере, для начального подмножества, для которого вы будете стрелять. В любом случае он вам понадобится для отладки.
  • Узнайте, как заставить работать газ (ассемблер gnu) для выбранного вами набора инструкций, чтобы вы могли создавать известные хорошие объектные файлы и тестовые программы.

Если вы не знакомы с другими языками программирования и / или не разбираетесь в ассемблере, это довольно сложный первый C-проект. Тем не менее, удачи!

5
задан John Saunders 17 June 2009 в 19:34
поделиться

3 ответа

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

Это нормально работает в среде IIS, где IIS может запускать несколько экземпляров сервера для обработки n одновременных вызывающих абонентов, по одному в качестве однопоточного сервера для каждого входящего запроса.

Вы упоминаете в одном из своих комментариев, что размещаете WCF внутри приложения форм - это может быть проектное решение, которое вам необходимо пересмотреть - это не совсем оптимальное решение, поскольку приложение Winforms не может легко обрабатывать несколько вызывающих и запускать несколько экземпляров служебного кода.

Marc

4
ответ дан 15 December 2019 в 01:09
поделиться

Используете ли вы режим совместимости с ASP.NET? Состояние сеанса?


Мой следующий вопрос: что заставляет вас думать, что это однопоточный? Как вы это определили и какой тест вы используете, чтобы доказать, что вы не решили проблему? Может быть ложное срабатывание.

0
ответ дан 15 December 2019 в 01:09
поделиться

Есть ли где-нибудь блокировка в вашей сервисной функции?

0
ответ дан 15 December 2019 в 01:09
поделиться
Другие вопросы по тегам:

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