gpt4 book ai didi

c++ - 使用 AWS-cpp-sdk 时,在退出程序之前等待异步调用返回

转载 作者:行者123 更新时间:2023-11-28 05:31:10 25 4
gpt4 key购买 nike

我正在做一个关于使用 AWS-cpp-sdk 的 POC为此,我编写了一个简单的程序来将消息发送到 SQS 队列。

我正在使用 SendMessageAsync 方法发送如下消息。

sqsClient->SendMessageAsync(sendMessageRequest, &sendMessageCallBack);

我的程序崩溃是因为我的程序在异步方法返回之前退出并且 Aws::ShutdownAPI(options); 终止了由异步方法调用创建的线程。

我发现适用于 JAVA 的 AWS-sdk 针对这种情况提出了以下建议。`

/**
* Shuts down the client, releasing all managed resources. This includes
* forcibly terminating all pending asynchronous service calls. Clients who
* wish to give pending asynchronous service calls time to complete should
* call getExecutorService().shutdown() prior to calling this method.
*/
@Override
public void shutdown() {
super.shutdown();
executorService.shutdownNow();
}`

我无法在 AWS cpp SDK 中找到等效的东西。有人可以建议什么是解决此问题的最佳方法。

最佳答案

您有责任确保在调用 ShutdownAPI() 之前完成您的请求。这通常只是在您直接在 main() 函数内执行操作的人为设计的“示例应用程序”类型场景中的一个问题。您还需要确保在调用 ShutdownAPI 之前删除 SQS 客户端。

选项是使用 std::condition_variable(信号量)在退出前进行同步。您可以将信号量传递给回调,并在回调结束时将 notify_one() 传递给回调。然后,在关闭之前,您可以在信号量上调用 wait()

关于c++ - 使用 AWS-cpp-sdk 时,在退出程序之前等待异步调用返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39497134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com