VB6: Регулярные выражения - проблема под Win7 - PullRequest
0 голосов
/ 25 февраля 2010

У меня есть небольшое приложение, которое использует регулярные выражения под VB6. Он отлично работает под XP, но под Win7 я испытываю огромные проблемы. иногда, когда текст, который передается в функцию регулярного выражения,> 20 КБ, он замораживает приложение, а также всю систему win7: он становится очень медленным, почти полностью зависает и только через ~ 30 секунд реагирует на несколько секунд и снова зависает. 1001 *

странная вещь - событие, если я завершаю задачу VB6 под менеджером задач, вся система остается медленной, зависшей и нестабильной. Это похоже на 100% загрузку процессора, хотя это нормально. Кажется, это системная вещь, которая съедает все ресурсы, и единственное, что помогает - это перезагрузка.

кто-нибудь испытывал то же самое / знает решение? Я уже гуглил, но ничего не смог найти.

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

ТНХ

1 Ответ

1 голос
/ 26 февраля 2010

Является ли приложение многопоточным? Вы также обновили аппаратное обеспечение с одноядерного ЦП на многоядерный / многопроцессорный?

Обычно, когда регулярное выражение становится мошенническим, оно либо вызывает переполнение стека, либо входит (по-видимому) в бесконечный цикл, но, похоже, этого с вами не происходит. Симптомы, которые вы описываете, больше похожи на тупик: несколько потоков выполнения конкурируют за один и тот же ресурс.

Сообщалось о некоторых ошибках в пакете регулярных выражений Java, которые оказались связаны с параллелизмом, и не имели ничего общего с регулярными выражениями как таковыми . Коренная ошибка существовала все время, но она не могла проявиться на одноядерном компьютере, даже в номинально многопоточном приложении. Об этом не сообщалось до тех пор, пока большое количество пользователей не перешло на многоядерное оборудование.

Я не предполагаю, что в VB6 есть ошибка параллелизма, как в Java; скорее это в вашем приложении. Если приложение является многопоточным, попробуйте устранить этот аспект и посмотреть, как оно влияет. Если это не так, или если это не поможет, нам понадобится дополнительная информация; В исходном вопросе не так много вопросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...