【发布时间】:2016-07-20 04:19:31
【问题描述】:
这是一个关于 C++ REST SDK 的异步任务特性的概念性问题(也许也是一个菜鸟问题)。
在一个基本应用程序中,我有一个客户端并执行多个请求,例如喜欢
http_client client(U("whatever"));
for(int i=0; i<100; ++i)
{
http_request request;
//fill the request
client.request(request).then([](http_response response) { /* do something*/});
}
(for-loop只是为了表明请求经常发送,我的代码中并没有真正使用它)。
问题:
据我了解,异步任务库然后以并行方式处理这些传入请求——这意味着不是主线程以类似事件的方式处理所有任务,而是库将任务分配给以某种(--对我来说是不透明的--)方式的底层线程池。我没听错吗?
如果前面的观点是正确的,那么是否有任何理由将 REST SDK 与 C++ 的多线程功能结合起来。例如,再次采用上述循环,启动 10 个线程,并在每个进程中进行 10 次循环迭代。这有意义还是没有必要?
此外,一般来说,是否存在应该通过 C++11 多线程特性结合 ppl 功能的常见模式?或者,依靠 REST SDK 和 ppl 来更好地完成工作是否安全?
(信息:我也在cpprest discussion page上问过这个问题。但是,这个论坛似乎不再维护了。)
【问题讨论】:
标签: c++ multithreading c++11 ppl casablanca