Здравствуйте, sraider, Вы писали:
S>Существуют ли библиотеки для удобного программирования асинхронных вызовов?
S>а) Может нажать "Отмена". Приложение все еще выполняется, но задачу уже можно прекращать. S>б) Может вообще закрыть приложение. Работу приложения нужно завершить.
S>То есть выполнение всей задачи нужно уметь прерывать. S>Предполагается, что у всех "долгих" функций есть еще и асинхронный интерфейс, который может уведомлять когда работа функции завершена, и также есть возможность послать асинхронно выполняющейся функции сигнал "прекратить работу".
Для этого используется механизм кооперативной отмены. То есть работа прерывается не в одностороннем порядке вызывающей стороной; вызываемая сторона должна «согласиться» прерваться. Посмотри в MSDN реализацию и примеры использования .NET-классов CancellationToken и CancellationTokenSource, и сделай по аналогии в C++. Но для этого асинхронный API должен поддерживать вызовы с передачей токена отмены, и его опрос.