问题标签 [asynchronous]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
7361 浏览

c++ - Simple Asynchronous Multi-Threaded HTTP request library for C++

I'll be quick and honest: I'm currently trying to write a client/server for an online game. Since I'm poor and limited on resources, I'll be testing the bare basics of the server using a PHP backend, with the eventual goal being to rebuild the server end in C++.

I'm looking for a C++ library for Windows (XP and Vista preferably) that will let me use a finite number of threads, one dedicated to each piece of the networking problem. As an example, I want to use a thread to report the positional information of the player to the server (and to receive responses about positional information of the other players) but I want a different thread to background download in the 3D artwork for the area/players, and a different thread for the built in chat system, etc. These all need to be fairly independent of one another.

I know what I want to do with the library, I've got the design bit figured out, I just feel a bit silly re-inventing the wheel, since I know that a good library for this exact purpose probably already exists. So, what are your suggestions? I need to be able to send data to a server, and accept responses. Ideally, the request needs to trigger an Event when its done (so I can immediately grab the data and do something with it) and I need to be able to handle multiple transactions simultaneously. HTTP is a nice bonus, but I can handle HTTP protocol myself if necessary, especially considering that I plan on dropping it in the long run.

Thanks!

0 投票
1 回答
1306 浏览

c++ - 异步使用 ReadDirectoryChangesW 时的线程死锁

我想在一个线程中实时监控多个目录的变化,所以我决定将 ReadDirectoryChangesW() 方法与 GetQueuedCompletionStatus 异步使用。这是我的代码:

在这里,当我运行我的代码时,我的线程会无缘无故地阻塞,无论我为 GetQueuedCompletionStatus() 函数的最后一个参数设置什么值。我不知道为什么我遇到了这个问题。谁能告诉我原因?非常感谢!

0 投票
2 回答
1451 浏览

f# - 好的 F# 异步 IO 示例

我在哪里可以找到一个很好的关于带有线程箍的文件的异步 IO 示例?

谢谢

0 投票
2 回答
4066 浏览

java - Future.get() 和 InterruptedException 异步线程

我在带有 httpClient 的应用程序中使用异步线程。我像这样使用 Future Api 拨打电话

此调用尝试检索从我的 Callable httpClient call() 方法返回的 html 字符串。

然而,我想要做的是确保 get 方法在执行 call() 方法时不会等待太久。我应该在调用 rssFuture.get() 时传递一个超时参数,还是只用一个 InterruptedException 捕获块包围就可以了?

还有一个异步线程在抛出 InterruptedException 之前等待的默认时间,如果是,我可以设置自定义值吗?

0 投票
1 回答
920 浏览

multithreading - 将使用 ManualResetEvent 的异步调用实现更改为使用 Thread 方法的组合

我正在寻找一种设计模式,以从使用 ManualResetEvent 切换到使用 Thread.Join 等线程方法。现在我正在进行异步调用,然后使用 ManualResetEvent 等待异步调用完成,然后再继续进行调用的线程。

我很高兴能够产生更稳定和易读的代码的任何实现。有兴趣查看使用 C# yield 关键字和 F# Async(如果有)的实现。

谢谢。

0 投票
3 回答
461 浏览

iphone - 处理变量赋值和异步请求

我正在寻找一种可靠的设计来处理涉及异步请求的分配。为了进一步澄清,我有一个处理数据管理的类。它是一个单例,包含很多对我来说的顶级数据,这些数据在我的 iPhone 应用程序中使用。

视图控制器可能会执行以下操作:

然后 MySingleton 将覆盖合成的用户 getter 并查看它是否已设置。如果未设置,它将与触发异步请求的连接管理器(NSURLConnection 及其委托方法的包装器)对话,这就是问题开始的地方。我无法保证“用户”何时可用。我可以将请求更改为同步,但这会直接影响用户体验,尤其是在带宽已经有限的移动环境中。

我需要能够在某个时候在我的 getter 中进行某种锁定/同步代码,直到它可用或为零时才会返回用户。

一旦 NSURLConnection 有可用的数据,它需要用响应对象回调某处/某处,并让 getter 知道数据可用..无论它是失败还是成功。

关于处理这个有什么建议吗?

0 投票
3 回答
821 浏览

python - 惯用的异步设计

在编写异步 API 时,我可以使用任何有用的习惯用法吗?我想对某些东西进行标准化,因为我似乎在整个过程中使用了几种不同的风格。让异步代码变得简单似乎很难;我想这是因为异步操作绝非如此。

在最基本的层面上,API 的用户必须能够:

  1. 在数据可用时将数据推送给他们
  2. 检查异步操作的状态
  3. 收到发生错误的通知
  4. 等待完成(将异步操作转换为同步操作)

我的类支持几种异步操作。我一直在围绕它的类中放置一些状态/错误回调,但是该类正被许多附带字段所困扰,并且变得太大。我很好奇是否有人使用过他们发现组织良好的异步 API。我查看了 .NET 的 Begin/EndAsyncOperation + AsyncResult 设计,以及 Java 中的一些类(例如 Future)。

这是用 Python 编写的,因此它仍然非常灵活。有一个警告:其中一些异步操作被编组到远程机器并在那里执行。因此,并非每个操作都必须在单独的线程中执行。

0 投票
3 回答
15867 浏览

javascript - IE 中的 Ajax 异步 - 错误“完成此操作所需的数据尚不可用”

我有一个用 Javascript 编写的 100% 有效的 Ajax 模型,其中包含我使用的一些输入,Get 或 Post 方法、要与之通信的页面、要发送到该页面的字符串以及我自己页面上的什么元素我可能会在什么时候摆弄我收到我的回复。问题是,如果我将请求设置为异步(因此是 Ajax),IE 在 onreadystatechange 事件中返回错误“完成此操作所需的数据尚不可用”,我所做的只是检查 readystate 是否为 4 和状态为 200。在 Firefox 或 Chrome 中不会出现错误,因为 Ajax 是异步的。

这是 Post 方法的一个片段

编辑:我应该指出,在 IE 中,我使用的是 ActiveX Control -> Msxml2.XMLHTTP 或 Microsoft.XMLHTTP 或先返回 true 的。

0 投票
2 回答
886 浏览

c# - 如何终止挂起的 APM 操作

如果您有待处理的操作,例如

然后关闭流提供程序,例如

不出所料,您会导致异常。

在关闭端口之前,是否有一种首选方法可以取消挂起的 APM 操作?


科尔比的回答不是我希望的答案,但他至少关闭了一条毫无结果的询问途径。

很高兴我找到了解决方案。

对于每个流,我在一个类中维护各种状态信息DeviceSession。这个类有一个方法ReadStream提供AsyncCallback处理传入数据的实现。

请注意,_asyncCallbackRead以下划线开头的所有其他变量都是在 DeviceSession 的构造函数中分配的类私有成员。

构造函数还提供对 的初始调用_stream.BeginRead

请注意,我没有费心设置ar.AsyncState. 因为回调委托引用了特定的 DeviceSession 实例的方法,所以详细的强类型上下文信息(包含在此 DeviceSession 实例的成员中)自动在范围内。这就是拥有会话对象的意义所在。

回到中止侦听器的主题,关闭流提供程序会触发回调,但尝试调用 EndRead 会导致IOException.

通常,此类异常表示需要重新启动侦听器的故障,并且希望通过重新启动流提供程序并重新创建会话来做出响应。由于缺乏可靠的独立于流提供者的方式来确定提供者是否出现故障或用户是否正在尝试重新启动连接(例如将新设备插入端口),这使情况变得复杂。

诀窍是在 中添加更多上下文 ( IsOpen) 以DeviceSession指示会话是打开还是已关闭,并使用它来顺利完成ReadStream.

If IsOpenis truethen anIOException表示需要恢复的故障。如果IsOpenfalse故意引发故障,则无需采取任何措施。

0 投票
2 回答
1681 浏览

asp.net - 为什么异步 ASHX 生成的图像在 IE6 中并不总是有效?

如果你使用继承 IHttpAsyncHandler 的 WebHandler,你应该不会注意到在未确定的特定情况下浏览器 MS IE6 不会显示它,请求永远不会完成。有解决办法吗?