В общем и обобщенном виде
Сильные указатели гарантируют их собственную действительность. Используйте их, например, когда:
Слабые указатели гарантируют знание их собственной действительности. Используйте их, например, когда:
Блокировка () на слабом указателе возвращает сильный указатель; вот как вы получаете доступ к слабому указателю. Если объект больше не является допустимым (он был удален и т.д.), то сильный указатель будет иметь значение NULL, в противном случае он будет указывать на объект. Вам нужно будет проверить это.
Это настроено таким образом, что вы не можете случайно удалить объект во время его использования, потому что вы сделали временный (локальный) сильный указатель, и, таким образом, гарантировал существование объекта, в то время как сильный указатель остается. По завершении использования объекта, как правило, сильный указатель выпадает из области действия (или переназначения его), что позволяет удалить объект. Для многопоточности, относитесь к ним с той же осторожностью, что и к другим вещам, которые не имеют встроенной безопасности потоков, отмечая, что гарантия, о которой я говорил выше , будет удерживаться при многопоточности. АФАИК они не делают ничего особенного в прошлом.
Общие указатели повышения также имеют такие же функции, как и сборщик мусора, так как когда последний сильный указатель на объект уходит или указывает где-то еще, объект удаляется.
В других ответах также указаны рабочие характеристики и циклические зависимости.
По сути, я бы сказал, что библиотека общих указателей Boost позволяет не путать создание программы, но она не заменяет собой время, необходимое для правильного проектирования указателей, владения объектами и времени жизни. При наличии такой конструкции можно использовать библиотеку для ее применения. Если у вас нет такого дизайна, вы, скорее всего, столкнетесь с другими проблемами, чем раньше.
-121--1158692-Cygwin иногда переносит списки ACL в файлы, вероятно, вам придется использовать cacls или chmod, чтобы исправить его, прежде чем вы сможете удалить файл.
-121--2267775-Да, в apache необходимо указать, где находится журнал ошибок для виртуального сервера. Например, имя моего виртуального сервера - djangoserver, а в моем файле/etc/apache2/sites-enabled/djangoserver - строка
ErrorLog /var/log/apache2/djangoserver-errors.log
Хотя теперь, когда я перечитал ваш вопрос, похоже, вы уже нашли журнал apache. Я не верю, что есть какой-то отдельный журнал для mod_python или самого питона.
Это производственная установка?
Если вы не захотите включить режим отладки , то Django выдаст очень подробные экраны с информацией об ошибках. В settings.py проекта установите
DEBUG = True
TEMPLATE_DEBUG = DEBUG
, чтобы отключить общие 500 экранов ошибок и просмотреть подробную разбивку.
Сальса делает несколько хороших предложений. Добавим, что сервер Development Django - отличная среда для отслеживания этих вещей. Иногда я даже бегу на это из производственного каталога (вздох!) С ./ Manage.py Runserver 0.0.0.0:8000
Так что I знаю Я использую тот же код.
По общему признанию, иногда что-то потерпит неудачу под Apache, а не под DEV Server, но это намек в себя.