问题标签 [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.
.net - .NET System.Net.CookieContainer 线程安全吗?
- .NET 类 System.Net.CookieContainer 线程安全吗?--更新:交钥匙回答--
- 有什么方法可以确保在异步请求期间修改的变量(即 HttpWebRequest.CookieContainer)的线程安全性?
- 是否有任何属性可以突出线程安全类?--更新:如果 MSDN 上描述了线程安全,那么他们可能没有这个属性 --
- 所有 .NET 类都是线程安全的吗?--更新:马克回答了--
我问这些问题是因为我在多线程代码的异步请求中使用了 CookieContainer。而且我不能将异步请求放入锁中。也许我必须像在 F# 中那样使用只读“变量”(或不可变类型),对吧?
c# - 如何异步处理?
假设我有一个实现IDisposable接口的类。像这样的东西:
MyClass使用一些非托管资源,因此IDisposable的Dispose()方法会释放这些资源。MyClass应该像这样使用:
现在,我想实现一个异步调用DoSomething()的方法。我向MyClass添加了一个新方法:
现在,从客户端来看,MyClass应该像这样使用:
但是,如果我不做任何其他事情,这可能会失败,因为对象myClass可能在调用DoSomething()之前被释放(并抛出意外的ObjectDisposedException)。因此,对Dispose()方法的调用(隐式或显式)应该延迟到对DoSomething()的异步调用完成。
我认为Dispose()方法中的代码应该以异步方式执行,并且只有在所有异步调用都被解决后。我想知道这可能是实现这一目标的最佳方式。
谢谢。
注意:为了简单起见,我没有详细介绍 Dispose() 方法是如何实现的。在现实生活中,我通常遵循Dispose 模式。
更新:非常感谢您的回复。我感谢你的努力。正如chakrit 所评论的,我需要对异步 DoSomething 进行多次调用。理想情况下,这样的事情应该可以正常工作:
我会研究计数信号量,这似乎是我在寻找的东西。这也可能是设计问题。如果我觉得方便,我将与您分享一些真实案例以及MyClass的真正作用。
sql - 异步选择 db2
db2 是否支持异步 SQL 操作?即,如果我在有 20M 行的表上执行 select stmt,我希望返回 5M 行。当我通过 JDBC 运行此查询时,我希望在 db 执行查询并在后端线程中异步填充 ResultSet 时立即返回控件。
我知道一些数据库,比如 SQL Server 支持,DB2 支持吗?
~斯里兰卡
c# - 检测到 ThreadPool WorkItem 已完成/等待完成
无论出于何种原因,ThreadPool
'sQueueWorkItem
都不会返回IAsyncResult
工作项的句柄或其他句柄,这将允许等待它完成。有一些RegisterWait...
方法,但是您必须通过 aWaitHandle
并且创建它们很昂贵(请参阅IAsyncResult
文档,它建议您延迟创建 aWaitHandle
直到请求)。Task Parallel Library 将解决这个缺陷,但在可用之前等待很长时间。那么,这个设计有什么问题吗:
编辑:我问了一个关于使用异步委托而不是 ThreadPool 时出现的问题的后续问题。
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
隐式实现。
c# - 异步调用 SSIS 包
我正在使用 LoadPackage(...) 调用 SSIS 包。
是否可以将此调用设为异步调用?
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 的答案是我所希望的,那么据我所知,这里应该没有种族条件。
multithreading - 忙碌的游标 - 为什么?
谁能给我一个他们认为繁忙的游标是合理的场景?我觉得从用户的角度来看它们总是一个坏主意。澄清:繁忙的光标是指当用户无法再与应用程序交互时,他们只能移动沙漏鼠标指针并吹口哨。
python - socket.shutdown 与 socket.close
我最近看到了一些看起来像这样的代码(当然 sock 是一个套接字对象):
在套接字上调用shutdown然后关闭它的目的到底是什么?如果有所不同,则此套接字用于非阻塞 IO。
asynchronous - 如何在 UML 活动图上显示异步操作
我即将为一些客户端-服务器连接建立代码绘制/记录以更好地理解它。有几个操作在不同的线程中异步完成(连接线程、数据接收线程等)。
我应该在单独的图表上显示它们吗?我宁愿将它放在单个图表上以掌握整体视图,但不知道如何在活动图上表示它。