sách gpt4 ai đã đi

Luồng .NET System.Net.CookieContainer có an toàn không?

In lại 作者:行者123 更新时间:2023-12-01 19:28:53 29 4
mua khóa gpt4 Nike

  1. .NET 类 System.Net.CookieContainer 线程安全吗? --làm mới:交 key 答复--
  2. 是否有任何方法可以确保异步请求期间修改的变量(即 HttpWebRequest.CookieContainer)的线程安全性?
  3. 是否有任何属性可以突出显示线程安全类? --làm mới:如果 MSDN 上描述了线程安全性,那么它们可能没有相应的属性 --
  4. 所有 .NET 类都是线程安全的吗? --làm mới:马克回答--

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

1 Câu trả lời

不,并非所有 .NET 类都是线程安全的。事实上,很少有人有必要这样做。一般来说,静态成员应该是线程安全的,但仅此而已。

不可变/半不可变对象(immutable对象)自动是线程安全的(这包括 XslTransform 等) - 并且在少数可变情况(例如线程容器)中您可以期望事物是线程安全的。 MSDN 规定了每个类的线程安全性。

我不期望 cookie 容器是线程安全的,因此您可能必须自己同步它。

(已更新)

回复你的第二点;您到底在考虑哪些变量?您自己的本地状态变量不会在异步请求期间直接更新,因此您只需在准备请求和处理响应时同步访问即可。最常见的是,通过 Monitor - 即

lock(syncLock) {
// prepare request from (synchronized) state
req.Begin{...}
}

然后在回调中

lock(syncLock) {
// ...read values from request...
// ...update local state...
}

TRONG syncLock 只是一个锁对象(可能针对实例持有):

private readonly object syncLock = new object();

关于.net - .NET System.Net.CookieContainer 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/396222/

29 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com