从协程中发帖不起作用

时间:2019-05-07 12:35:59

标签: c++ boost-asio

大型企业项目。我有一个io_service实例:ios _。

我使用协程(boost :: asio :: spawn)

有时(并非总是如此),当我从协程发布函数到boost :: asio :: strand(!!!!)时,该函数未调用。这条链上没有任何东西,也没有stackoverflow错误。

我的问题是:为什么不调用功能?是否存在一些原则性竞争或系统资源方面的问题?

        boost::asio::spawn(ios_, [...]                  (boost::asio::yield_context asio_yield)
        { 
            // BIG asynchronous code

             boost::asio::strand strand1(ios_);
             strand1.post([](){ 
                             // light code. 
                             // sometimes we don't get here
                               cout << "posted to a strand"
                               });

         });

1)如果我们在发布到链上之前退出协程(例如,通过发布到ios_)-效果很好,我们总是可以使用函数

2)如果我们在boost :: asio :: spawn中使用boost :: asio :: io_service的另一个实例-它也表现得很好

3)启动boost :: asio :: io_service时,thread_pool(12)中有足够的线程

4)使用:1.63提升

我学到的唯一一课:尽快离开协程。但是我们程序的行为是这样的-我没有得到

0 个答案:

没有答案