相关疑难解决方法(0)

什么是C++ 11启动异步任务并忘掉它的方法?

我需要这样的东西:

void launch_task()
{
    std::thread([](){ run_async_task(); });
}
Run Code Online (Sandbox Code Playgroud)

除了线程的析构函数将终止我的任务.我不需要对任务进行任何控制,也不需要返回值.它必须运行它,然后线程应该终止并且应该处理C++线程对象.我需要什么C++ 11工具?

我看过了std::async,但找不到我案例的用法示例.它似乎是一个非常复杂的系统,我需要以某种方式存储和操作std::future它或它变得同步(如果我的理解是正确的;我没有找到一篇好的明确文章std::async).

c++ multithreading c++11

28
推荐指数
2
解决办法
6277
查看次数

C++ 11线程与异步性能(VS2013)

我觉得我在这里错过了一些东西......

我稍微改变了一些代码,从使用到改变std::thread,std::async并注意到性能的显着增加.我写了一个简单的测试,我认为它应该std::thread像使用它一样运行几乎相同std::async.

std::atomic<int> someCount = 0;
const int THREADS = 200;
std::vector<std::thread> threadVec(THREADS);
std::vector<std::future<void>> futureVec(THREADS);
auto lam = [&]()
{
    for (int i = 0; i < 100; ++i)
        someCount++;
};

for (int i = 0; i < THREADS; ++i)
    threadVec[i] = std::thread(lam);
for (int i = 0; i < THREADS; ++i)
    threadVec[i].join();

for (int i = 0; i < THREADS; ++i)
    futureVec[i] = std::async(std::launch::async, lam);
for (int i = 0; i …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading asynchronous c++11 visual-studio-2013

15
推荐指数
2
解决办法
4069
查看次数