Как я знаю, приостановлен ли поток под Windows CE

Проблема заключается в том, что команда aws ecr get-login извлекает токен, действительный для указанного реестра в течение 12 часов, а затем печатает команду входа в Docker с этим токеном авторизации, и мы не выполняем полученную нами команду назад.

Нам нужно выполнить эту напечатанную команду, чтобы войти в ваш реестр с помощью Docker. В моем случае я использую eval для выполнения напечатанной команды, которую я получаю из aws ecr get-login, например:

eval $ (aws ecr get-login --region eu-west-1 - -профиль)

7
задан SmacL 22 May 2009 в 12:31
поделиться

4 ответа

У меня комбинированное решение. Используйте WaitForSingleObject (), чтобы определить, приостановлен поток или нет.

Если он не приостановлен, счетчик приостановки, очевидно, равен 0.

Если он приостановлен, можно безопасно вызвать SuspendThread () для получения счетчика приостановки. Поскольку он уже приостановлен, вы ничего не остановите.

4
ответ дан 7 December 2019 в 12:24
поделиться

Возможно, с помощью WaitForSingleObject вы можете проверить, приостановлен ли поток, но не можете получить счетчик приостановки.

0
ответ дан 7 December 2019 в 12:24
поделиться

Вы никогда не должны приостанавливать работу какого-либо потока ни на какой платформе.

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

Следующие операции с потоками должны быть полностью запрещены на любой платформе для любого программиста:

  • Приостановить
  • Возобновить (так как оно вам не понадобится, если вы не можете приостановить поток)
  • Убить / Прервать

Никогда и никогда не следует принудительно навязывать свою волю извне на поток . У вас нет гарантии, что он делает, какие ресурсы он в настоящее время блокирует.

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

1
ответ дан 7 December 2019 в 12:24
поделиться

Даже если поток активен, вы все равно получите результат WAIT_TIMEOUT, потому что потоки сигнализируют только о завершении, а не о завершении. повторно запущен.

Это говорит о WaitForSingleObject (hThread,

0
ответ дан 7 December 2019 в 12:24
поделиться