Прервать поток?

Верный pdo хорош, но там имеет [приблизительно 112] противоречие о, это - производительность по сравнению с mysql и mysqli, хотя это кажется фиксированным теперь.

необходимо использовать pdo, если Вы предполагаете мобильность, но в противном случае mysqli должен быть путем. Это имеет интерфейс OO, подготовленные операторы и большую часть того, что pdo предлагает (кроме, ну, в общем, мобильности).

Плюс, если производительность действительно необходима, готовятся к (собственный mysql) драйвер MysqLnd в PHP 5.3, кто будет намного более тесно интегрирован с php с лучшей производительностью и улучшенным использованием памяти (и статистика для настройки производительности).

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

5
задан jpfollenius 6 November 2009 в 11:13
поделиться

2 ответа

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

Что вы можете сделать заключается в вызове функции API TerminateThread () , что является злом . Прочтите список проблем и предупреждений по этой ссылке и посмотрите, хотите ли вы по-прежнему вызывать его. Нет другого способа, который работал бы без взаимодействия с кодом задачи.

7
ответ дан 18 December 2019 в 13:15
поделиться

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

Например, вероятно, не рекомендуется использовать разделяемую память для связи; использовать файлы или каналы или аналогичный механизм, который не ломается и не останавливается, когда другой конец не работает. Если вы используете именованные мьютексы для межпроцессной синхронизации, имейте в виду, что для этих примитивов синхронизации существует определенное состояние ошибки: WAIT_ABANDONED возвращается WaitForSingleObject и друзьями, если поток (или, неявно, основной поток процесса), который последним удерживал примитив, был прекращено, не отпуская его. По сути, это означает, что вам нужно использовать поэтапный транзакционный подход к передаче данных,

7
ответ дан 18 December 2019 в 13:15
поделиться
Другие вопросы по тегам:

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