为什么 MonitoringManager::OnRequestSucceeded() 中的 assert(s_moni
Why does an assert(s_monitors) in MonitoringManager::OnRequestSucceeded() fail?
我将文件上传到S3。请求后,我直接从监控管理器收到异常,我不知道我做错了什么。我们在应用程序中使用多个线程。
异常:断言失败。程序:。。。监控。。。德国.cpp 55路扩展: s_monitors
cpp 文件:https://github.com/aws/aws-sdk-cpp/blob/master/aws-cpp-sdk-core/source/monitoring/MonitoringManager.cpp 第 55 行
uploadFileToS3(...);
方法"上传文件到S3":
bool result = false;
const Aws::SDKOptions options;
Aws::InitAPI(options);
{
std::shared_ptr<Aws::Utils::Threading::Executor> m_executor = Aws::MakeShared<Aws::Utils::Threading::PooledThreadExecutor>("TransferTests", 4);
Aws::Transfer::TransferManagerConfiguration config(m_executor.get());
config.s3Client = client;
auto transmanager = Aws::Transfer::TransferManager::Create(config);
std::shared_ptr<Aws::Transfer::TransferHandle> handle = transmanager->UploadFile(fileDestination, Aws::String(S3_BUCKET_NAME),
Aws::String(s3key), Aws::String("multipart/form-data"), metadata);
handle->WaitUntilFinished();
result = isAwsActionSuccessful(handle) && boost::filesystem::remove(fileDestination);
}
Aws::ShutdownAPI(options);
return result;
问题是我的应用程序使用了多个线程,因此 API 被初始化并多次关闭。当我在应用程序中仅执行一次 API 的初始化/关闭时,问题已解决。
相关文章:
- 如何在 assert() 和 static_assert() 之间调度,如果在 constexpr 上下文中依赖?
- 我关于函数"Assert"的C++代码有问题
- assert() 在发布模式下充当标识函数吗?
- 如何编写一个接受如下断言消息的自定义断言函数:assert(false) << "assertio
- 我可以禁用 GCC 的 assert() 的 noreturn 属性吗?
- 能够使用debug.assert()函数需要什么
- (公开简历)ASSERT: "false" in file qasciikey.cpp
- ASSERT: "allArguments.size() == origArgc"
- Qt5 - ASSERT: "bytesTransferred == writeChunkBuffer.size()"
- VS2017 MFC Assert: f:ddvctoolsvc7libsshipatlmfcinclude
- C++ EXPECT_EQ & ASSERT inside for loop
- 为什么 MonitoringManager::OnRequestSucceeded() 中的 assert(s_moni
- 如何正确调用 Assert::ExpectException
- 使用 assert 帮助编译器更好地优化
- 自定义"assert"宏,支持逗号和错误消息
- 是否可以有一个零成本assert(),这样代码就不必在调试和发布版本之间进行修改
- 如何在 Google 测试中抑制终止时 assert() 意外触发
- VS2010: assert "vector iterators incompatible" in std::vector.clear()
- boost shared_ptr assert失败,但值不是null
- 如何使用assert函数