草庐IT

dispatch_async

全部标签

c# - async/await 与 ConfigureAwait 的 continueOnCapturedContext 参数和用于异步延续的 SynchronizationContext

我想先放代码,然后说明情况,并据此提出我的问题:publicpartialclassMainWindow:Window{publicMainWindow(){InitializeComponent();}privateasyncvoidButton_Click_2(objectsender,RoutedEventArgse){varresult=awaitGetValuesAsync();Foo.Text+=result;}publicasyncTaskGetValuesAsync(){using(varhttpClient=newHttpClient()){varresponse=a

c# - 当涉及到可变值类型时,如何处理 async/await 产生的副作用?

请考虑以下示例代码:usingSystem.Diagnostics;usingSystem.Threading.Tasks;publicstructAStruct{publicintValue;publicasyncTaskSetValueAsync(){Value=awaitTask.Run(()=>1);}publicvoidSetValue(){Value=1;}}classProgram{staticvoidMain(string[]args){Test(newAStruct());TestAsync(newAStruct()).Wait();}privatestaticasy

c# - 为什么在控制台应用程序中使用 async/await 时需要 AsyncContext?

我在我的控制台应用程序中调用一个异步方法。我不希望应用程序在启动后不久退出,即在等待任务完成之前退出。看来我可以这样做:internalstaticvoidMain(string[]args){try{Task.WaitAll(DoThisAsync());}catch(Exceptionex){Console.Error.WriteLine(ex);throw;}}internalstaticasyncTaskDoThisAsync(){//...}但根据StephenCleary'sarticle似乎我不能那样做,而是应该为异步创建某种上下文以在它完成时返回(例如AsyncCont

php - Magento:在 pre_dispatch 观察者中停止调度

我想影响产品渲染(将$params传递给Mage_Catalog_Helper_Product_View::prepareAndRender())并在controller_action_predispatch_catalog_product_view事件上注册了一个观察者.呈现工作正常,但原始的catalog/product/view操作仍在执行,因此显示了两个产品。如何在预调度观察器期间停止调度? 最佳答案 请求的dispatched字段必须为真必须将前面操作的FLAG_NO_DISPATCH标志设置为true在代码中(内部观察者

java - 调用@Async 方法时,Spring MVC Controller 不会立即返回

我正在使用spring注释来配置Controller(@EnableWebMvc)、服务(@service和@ComponentScan)。在我的一项服务中,我有一个用@Async注释的方法,我还在我的配置类中添加了@EnableAsync。当MVCController之一调用用@Async注释的服务方法时,我希望Controller立即返回,而无需等待服务方法完成。事实并非如此。当我在服务方法中设置断点时,我发现它实际上是在一个单独的线程中运行,即堆栈跟踪确实显示它正在使用我在下面配置的SimpleAsyncTaskExecutor。这是我的配置类中的注解@Configuration

c++ - std::async 不使用 std::launch::async 策略启动新线程

如果我使用std::launch::async策略启动std::async,它不应该在新线程中启动每个异步任务吗?目前看起来新的异步任务移动到刚刚完成其工作的线程。我使用VC11作为我的编译器。从输出中可以看出,当使用std::async启动新工作程序(例如,工作程序多次获取ID为34500的线程)时,它会在先前完成的线程中启动。我对std::async的理解是错误的还是存在底层工作窃取队列或类似的东西?Worker(ID=24072)starting.Worker(ID=34500)starting.Worker(ID=32292)starting.Worker(ID=31392)s

c++ - asio::async_write 在大容量流上同步非常困难

我目前正在使用AsioC++库并围绕它编写了一个客户端包装器。我最初的方法是非常基本的,只需要在一个方向上流动。要求已经改变,我已经切换到使用所有异步调用。除了asio::async_write(...)之外,大多数迁移都很容易。我使用了几种不同的方法,但不可避免地会遇到每一种方法的僵局。应用程序连续地传输大量数据。我一直远离strands,因为它们不会阻塞并且会导致内存问题,尤其是当服务器负载很重时。作业将备份并且应用程序堆无限增长。所以我创建了一个阻塞队列只是为了找出在回调和/或阻塞事件之间使用锁会导致未知行为的困难方法。包装器是一个非常大的类,所以我将尝试解释我目前状态下的景观,

c++ - std::async 在 linux 上的 gcc 4.7 中被破坏了吗?

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭9年前。在实际代码中使用它之前,我正在隔离地测试std::async,以验证它是否在我的平台(即ubuntu12.1064位)上正常工作。它有效(很少)并且通常只是挂起。如果它对您有用,请不要妄下结论。多试几次,估计会挂掉。如果我删除pthread_mutex测试,它不会挂起。这是我可以重现挂起的最小代码。有什么原因不能将Cpthread代码与C++异步代码混合使

c++ - 未调用 boost SSL async_shutdown 完成处理程序

我将boost1.54.0与OpenSSL1.0.1e结合使用。不时关闭SSL连接对象时,我会看到async_shutdown()的完成处理程序不被调用。调试后我发现,当存在超出async_write()时会发生这种情况。SSLasync_shutdown()应该发送SSLAlert(Closing),因此我们这里有2次写入。我知道多个async_write()是被禁止的。我应该如何处理这种情况?我应该在调用SSLasync_shutdown()之前等待async_write()完成吗?编辑:根据this我可能需要在底层TCP套接字上使用cancel()来取消所有未完成的异步操作。是否

c++ - boost asio 中的并发读取和 async_read_some

假设在boost::asio中的套接字上启用了async_read_some服务,如果在同一套接字上调用阻塞读取会发生什么情况?一段伪代码如下:usingboost::asio::local::stream_protocol;boost::asio::io_serviceio;stream_protocol::sockets(io);s.connect(stream_protocol::endpoint(address));s.async_read_some(aBuffer,aCallback);//startasync_readboost::threadthread(boost::b