relictus
Цитата:
Попробовал. Тебе удалось заменить магическое число 10 на другое магическое число 2 (иногда на 3, 4 и тд)!
Подробный протокол тестирования: (текст слишком длинный, вывод - в п.0, всех прошу сразу туда)
1. запускаем последовательно 3 экземпляра программы, нумеруются нормально, закрываем 2 экземпляр, остаются работать 1 и 3. Запускаем 2 снова - как и хотели получаем 2 порядковый номер, а не 4, как было в версии 1.4.0.
2. открыты 6 экземпляров, закрываем 2 и 5. Запускаем последовательно еще 3 экземпляра, они получают номера 2, 5 и 7. Все нормально.
3. повторяем эти действия с любым количеством одновременно запущенных экземпляров до 9 включительно, сбоев нет, нумеруются верно.
4. запускаем с 1 по 9 экземпляр программы, потом запускаем 10-й экземпляр, он получает номер 10, зато запуская потом сколько угодно экземпляров, получаем в заголовке каждого - номер 2, а не 11, 12 и тд, как ожидалось.
5. дальше - еще веселее, если кому читать надоело уже переходим к выводу в п.0.
Ну а кто еще с нами -
6. запускаем с 1 по 9 экземпляр программы, потом запускаем 10-й экземпляр, закрываем 3 и 5 - остались в памяти 1,2,4,6,7,8,9,10 экземпляры. Запускаем еще 2 экземпляра и получаем в заголовке каждого - номер 2, а не 3 и 5, как ожидалось.
7. запускаем 10 экземпляров, закрываем/открываем 5 экземпляр, он получает номер 2. Закрываем номер 10, после чего, если закрывать/открывать, например, номера 6 и 7 они уже будет получать стабильно номер 2, иногда так же стабильно 3 или 5, в общем, что попало. . И вообще - пока в памяти есть экземпляр с номером 10, хоть все остальные закрой, при повторном открытии они пронумеруются так - 1,2,2,2 и тд. Если номер 10 закрыт, но есть в памяти варианты с неверными цифрами 2, то нумерация новых будет - 1,3,3,3 и тд. Уфф... все. Тест окончен.
0. В общем, сбой в алгоритме начинается как только в памяти оказывается 10-й экземпляр программы. Правильная нумерация восстанавливается, если а) уменьшить количество одновременно запущенных экземпляров программы меньше 10-ти и обязательно б) закрыть экземпляры с номером 10 и со всеми неверными номерами.
Рекомендация для версии 1.4.1 - не превышать количество одновременно запущенных программ выше 9, тогда нумерация будет верная.
Обычно чужой алгоритм прикрыт внутри программы как черный ящик, видны только входы и выходы, но все-таки удается представить варианты его реализации. Здесь же придется все-таки в текст программы глазами посмотреть, слишком уж весело все пляшет. Прямо - задачка для проверки IQ программиста получилась
Цитата:
Ну попробуй, так ты хотел с нумерацией экземпляров проги?
Попробовал. Тебе удалось заменить магическое число 10 на другое магическое число 2 (иногда на 3, 4 и тд)!
Подробный протокол тестирования: (текст слишком длинный, вывод - в п.0, всех прошу сразу туда)
1. запускаем последовательно 3 экземпляра программы, нумеруются нормально, закрываем 2 экземпляр, остаются работать 1 и 3. Запускаем 2 снова - как и хотели получаем 2 порядковый номер, а не 4, как было в версии 1.4.0.
2. открыты 6 экземпляров, закрываем 2 и 5. Запускаем последовательно еще 3 экземпляра, они получают номера 2, 5 и 7. Все нормально.
3. повторяем эти действия с любым количеством одновременно запущенных экземпляров до 9 включительно, сбоев нет, нумеруются верно.
4. запускаем с 1 по 9 экземпляр программы, потом запускаем 10-й экземпляр, он получает номер 10, зато запуская потом сколько угодно экземпляров, получаем в заголовке каждого - номер 2, а не 11, 12 и тд, как ожидалось.
5. дальше - еще веселее, если кому читать надоело уже переходим к выводу в п.0.
Ну а кто еще с нами -
6. запускаем с 1 по 9 экземпляр программы, потом запускаем 10-й экземпляр, закрываем 3 и 5 - остались в памяти 1,2,4,6,7,8,9,10 экземпляры. Запускаем еще 2 экземпляра и получаем в заголовке каждого - номер 2, а не 3 и 5, как ожидалось.
7. запускаем 10 экземпляров, закрываем/открываем 5 экземпляр, он получает номер 2. Закрываем номер 10, после чего, если закрывать/открывать, например, номера 6 и 7 они уже будет получать стабильно номер 2, иногда так же стабильно 3 или 5, в общем, что попало. . И вообще - пока в памяти есть экземпляр с номером 10, хоть все остальные закрой, при повторном открытии они пронумеруются так - 1,2,2,2 и тд. Если номер 10 закрыт, но есть в памяти варианты с неверными цифрами 2, то нумерация новых будет - 1,3,3,3 и тд. Уфф... все. Тест окончен.
0. В общем, сбой в алгоритме начинается как только в памяти оказывается 10-й экземпляр программы. Правильная нумерация восстанавливается, если а) уменьшить количество одновременно запущенных экземпляров программы меньше 10-ти и обязательно б) закрыть экземпляры с номером 10 и со всеми неверными номерами.
Рекомендация для версии 1.4.1 - не превышать количество одновременно запущенных программ выше 9, тогда нумерация будет верная.
Обычно чужой алгоритм прикрыт внутри программы как черный ящик, видны только входы и выходы, но все-таки удается представить варианты его реализации. Здесь же придется все-таки в текст программы глазами посмотреть, слишком уж весело все пляшет. Прямо - задачка для проверки IQ программиста получилась