Как приостановиться / возобновляют какой-либо внешний процесс в соответствии с Windows?

Вы можете изменить алгоритм кластеризации в соответствии с вашими потребностями.

Вы можете следить за этим учебником для K-Средств одинакового размера или просто использовать этот алгоритм из tutorial пакет / модуль в ELKI (создайте последнюю версию GitHub, потому что я просто исправил там ошибку - это будет включено в ELKI 0.7.2).

По сути, этот алгоритм выполняет k-мерный стиль Оптимизация наименьших квадратов, но все кластеры должны иметь одинаковый размер (если N / k не является целым числом, размеры кластера могут варьироваться в зависимости от 1).

Если вы перейдете к предыдущему учебнику и прокрутите до конца, вы можете увидеть примеры результатов.

8
задан Chilledrat 1 May 2012 в 19:24
поделиться

3 ответа

Если Вы "отлаживаете отладчик" (например, с помощью logger.exe прослеживать все вызовы API, сделанные windbg.exe), кажется, что отладчик использует SuspendThread()/ResumeThread() приостановить все потоки в отлаживаемом процессе.

PsSuspend может использовать другой способ приостановить процессы (я не уверен), но все еще возможно подвесить другие процессы: если процесс, который Вы приостанавливаете, содержит общий объект синхронизации, который необходим другому процессу, можно заблокировать тот другой процесс от делания любых успехов. Если обе программы правильно написаны, они должны восстановиться, когда Вы возобновляете тот, который Вы приостановили, но не все программы правильно написаны. И если это вызывает Вашу программу, которая делает приостановку для зависания, затем у Вас есть мертвая блокировка.

5
ответ дан 5 December 2019 в 15:28
поделиться

Я протестировал http://www.codeproject.com/KB/threads/pausep.aspx на небольшом количестве программного обеспечения:

это хорошо работает.

PsSuspend и Pausep являются двумя допустимыми опциями.

1
ответ дан 5 December 2019 в 15:28
поделиться

Я думаю, что существует серьезное основание, почему нет никакого SuspendProcess () функции в Windows. Наличие такой функции открывает дверь для нестабильной системы. Вы не должны приостанавливать процесс, если Вы не создали тот процесс сами. Если бы Вы записали, что обрабатывают себя, то Вы могли использовать событие (см.:: SetEvent () и т.д. в MSDN) или другой вид обмена сообщениями для инициирования команды "пауза" в процессе.

0
ответ дан 5 December 2019 в 15:28
поделиться
Другие вопросы по тегам:

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