问题标签 [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 回答
2865 浏览

.net - .NET System.Net.CookieContainer 线程安全吗?

  1. .NET 类 System.Net.CookieContainer 线程安全吗?--更新:交钥匙回答--
  2. 有什么方法可以确保在异步请求期间修改的变量(即 HttpWebRequest.CookieContainer)的线程安全性?
  3. 是否有任何属性可以突出线程安全类?--更新:如果 MSDN 上描述了线程安全,那么他们可能没有这个属性 --
  4. 所有 .NET 类都是线程安全的吗?--更新:马克回答了--

我问这些问题是因为我在多线程代码的异步请求中使用了 CookieContainer。而且我不能将异步请求放入锁中。也许我必须像在 F# 中那样使用只读“变量”(或不可变类型),对吧?

0 投票
9 回答
22501 浏览

c# - 如何异步处理?

假设我有一个实现IDisposable接口的类。像这样的东西:

http://www.flickr.com/photos/garthof/3149605015/

MyClass使用一些非托管资源,因此IDisposable的Dispose()方法会释放这些资源。MyClass应该像这样使用:


现在,我想实现一个异步调用DoSomething()的方法。我向MyClass添加了一个新方法:

http://www.flickr.com/photos/garthof/3149605005/

现在,从客户端来看,MyClass应该像这样使用:

但是,如果我不做任何其他事情,这可能会失败,因为对象myClass可能在调用DoSomething()之前被释放(并抛出意外的ObjectDisposedException)。因此,对Dispose()方法的调用(隐式或显式)应该延迟到对DoSomething()的异步调用完成。

我认为Dispose()方法中的代码应该以异步方式执行,并且只有在所有异步调用都被解决后。我想知道这可能是实现这一目标的最佳方式。

谢谢。

注意:为了简单起见,我没有详细介绍 Dispose() 方法是如何实现的。在现实生活中,我通常遵循Dispose 模式


更新:非常感谢您的回复。我感谢你的努力。正如chakrit 所评论的,我需要对异步 DoSomething 进行多次调用。理想情况下,这样的事情应该可以正常工作:

我会研究计数信号量,这似乎是我在寻找的东西。这也可能是设计问题。如果我觉得方便,我将与您分享一些真实案例以及MyClass的真正作用。

0 投票
3 回答
615 浏览

sql - 异步选择 db2

db2 是否支持异步 SQL 操作?即,如果我在有 20M 行的表上执行 select stmt,我希望返回 5M 行。当我通过 JDBC 运行此查询时,我希望在 db 执行查询并在后端线程中异步填充 ResultSet 时立即返回控件。

我知道一些数据库,比如 SQL Server 支持,DB2 支持吗?

~斯里兰卡

0 投票
2 回答
3180 浏览

c# - 检测到 ThreadPool WorkItem 已完成/等待完成

无论出于何种原因,ThreadPool'sQueueWorkItem都不会返回IAsyncResult工作项的句柄或其他句柄,这将允许等待它完成。有一些RegisterWait...方法,但是您必须通过 aWaitHandle并且创建它们很昂贵(请参阅IAsyncResult文档,它建议您延迟创建 aWaitHandle直到请求)。Task Parallel Library 将解决这个缺陷,但在可用之前等待很长时间。那么,这个设计有什么问题吗:

编辑:我问了一个关于使用异步委托而不是 ThreadPool 时出现的问题的后续问题

0 投票
2 回答
9907 浏览

c# - 显式实现 IAsyncResult

我通常对部分实现接口持谨慎态度。然而,IAsyncResult这是一种特殊情况,因为它支持几种完全不同的使用模式。您多久使用/看到使用AsyncState/AsyncCallback模式,而不是仅仅调用EndInvoke、使用AsyncWaitHandle或轮询IsCompleted(讨厌)?

相关问题:Detecting that a ThreadPool WorkItem has completed/waiting for completion

考虑这个类(非常近似,需要锁定):

它有WaitHandle(懒惰地创建,正如IAsyncResult文档中描述的那样)和IsCompleted,但我没有看到AsyncState{return null;}?)的合理实现。那么实施它有意义IAsyncResult吗?请注意,Task在 Parallel Extensions 库中确实实现了IAsyncResult,但只是IsCompleted隐式实现。

0 投票
4 回答
5280 浏览

c# - 异步调用 SSIS 包

我正在使用 LoadPackage(...) 调用 SSIS 包。

是否可以将此调用设为异步调用?

0 投票
2 回答
7244 浏览

c# - 以多线程方式使用 BeginInvoke/EndInvoke。AsyncCallback、AsyncWaitHandle 和 IsCompleted 如何交互?

Andreas Huber 对这个问题的回答让我想到了Concurrent<T>使用异步委托而不是线程池来实现。但是,我发现更难理解将 anAsyncCallback传递给时发生了什么BeginInvoke,尤其是当多个线程可以访问IAsyncResult. 不幸的是,MSDN 或我能找到的任何地方似乎都没有涵盖这种情况。此外,我能找到的所有文章要么是在闭包和泛型可用之前编写的,要么看起来就是这样。有几个问题(我希望答案是真的,但我准备好失望了):

1) 使用闭包作为 AsyncCallback 会有什么不同吗?
(希望不是)
2)如果一个线程在等待AsyncWaitHandle,它会
在回调开始之前或 b)在它完成之后发出信号吗?
(希望是b)
3)当回调运行时,会IsCompleted返回什么?我可以看到的可能性:
a)true;b) false; c)false在回调调用 EndInvoke 之前,true之后。
(希望是 b 或 c)
4)DisposedObjectException如果某个线程在调用AsyncWaitHandle之后等待会被抛出EndInvoke
(希望不是,但我希望是的)。

如果答案如我所愿,这似乎应该有效:

如果问题 1-3 的答案是我所希望的,那么据我所知,这里应该没有种族条件。

0 投票
12 回答
3897 浏览

multithreading - 忙碌的游标 - 为什么?

谁能给我一个他们认为繁忙的游标是合理的场景?我觉得从用户的角度来看它们总是一个坏主意。澄清:繁忙的光标是指当用户无法再与应用程序交互时,他们只能移动沙漏鼠标指针并吹口哨。

0 投票
7 回答
193091 浏览

python - socket.shutdown 与 socket.close

我最近看到了一些看起来像这样的代码(当然 sock 是一个套接字对象):

在套接字上调用shutdown然后关闭它的目的到底是什么?如果有所不同,则此套接字用于非阻塞 IO。

0 投票
2 回答
22224 浏览

asynchronous - 如何在 UML 活动图上显示异步操作

我即将为一些客户端-服务器连接建立代码绘制/记录以更好地理解它。有几个操作在不同的线程中异步完成(连接线程、数据接收线程等)。

我应该在单独的图表上显示它们吗?我宁愿将它放在单个图表上以掌握整体视图,但不知道如何在活动图上表示它。