Вы можете написать сценарий rexx, чтобы установить соединение с подсистемой Db2, а затем выполнить ту же команду. Позвольте мне найти образец и отправить вам ... это команда, которую вы можете использовать для соединения с DB2 из REXX ADDRESS DSNREXX ' СОЕДИНИТЬ '' DB01 '
Я обычно использую тайм-ауты. Самая большая проблема здесь - то, что, если тайм-аут достигнут, операция запроса будет прерванной. Это очевидно предпочтительно для заведения в тупик. Существует большая проблема там хотя: если операция очень важна, и Вы начинаете прерываться, потому что что-то еще заведено в тупик, если Ваш дизайн не является звуковым, Вы могли бы закончить тем, что вызвали спускающуюся по ферме проблему, которую Вы описали с помощью этого метода (хотя более мягкий: Ваше приложение больше не будет работать, но Вы не потеряли контроль).
Основное различие - то, что Вы на самом деле имеете контроль здесь, тогда как, если потоки начинают заходить в тупик, нет ничего, что можно сделать в рамках кода для решения проблемы, после того как отказ запустился.
Как правило я никогда не создаю блокировки с бесконечными тайм-аутами. Это просто приводит к дефицитному и трудному к отладке заведению в тупик. Это не берет добавленной работы для добавления проверки тайм-аута, даже если это просто выдает исключение, и это уведомляет Вас почти сразу, если у Вас есть мертвая блокировка. Что еще более важно, это помогает Вам найти, что узкие места вызвали блокировки bu, которые не могут вызвать полные мертвые блокировки.
Возможно доказать, что мертвые блокировки не могут произойти. Также возможно доказать во времени выполнения, что мертвые блокировки могут произойти даже без в зависимости от условий состязания (см. lockdep Linux, например).
Поэтому всегда попытка блокировки не имеет смысла. Это зависит от обстоятельств.
Можно ли корректно восстановиться с ситуации, где попытка блокировки испытала таймаут? Если можно затем любой ценой использовать тайм-ауты. Если Вы не можете затем нет большого количества точки в таймауте. Что Вы собираетесь сделать при возобновлении выполнения? В лучшем случае можно выйти с сообщением об ошибке. Тайм-ауты имеют свое использование, но они могут также использоваться в качестве способа скрыть тонкие ошибки многопоточного выполнения, таким образом, я думаю, что лучший совет является использованием с осторожностью.