相关疑难解决方法(0)

SynchronizedCollection <T>和其他并发集合有什么区别?

除了Concurrent Collections是命名空间还是一个类之外,命名空间中SynchronizedCollection<T>的并发集合如何System.Collections.Concurrent相互不同SynchronizedCollection<T>

SynchronizedCollection<T>并发集合中的所有类都提供了线程安全的集合.我如何决定何时使用其中一个,为什么?

c# collections .net-4.0 thread-safety concurrent-collections

51
推荐指数
2
解决办法
2万
查看次数

什么是线程安全(C#)?(字符串,数组,......?)

我对C#很新,所以请耐心等待.我对线程安全感有点困惑.什么时候线程安全什么东西什么时候不安全?

正在阅读从现场总是线程安全的(刚刚从一些被初始化之前读)?

//EXAMPLE
RSACryptoServiceProvider rsa = new RSACrytoServiceProvider();
rsa.FromXmlString(xmlString);  
//Is this thread safe if xml String is predifined 
//and this code can be called from multiple threads?
Run Code Online (Sandbox Code Playgroud)

访问的数组或列表的对象始终是线程安全的(如果你使用一个for循环枚举)?

//EXAMPLE (a is local to thread, array and list are global)
int a = 0;
for(int i=0; i<10; i++)
{
  a += array[i];
  a -= list.ElementAt(i);
}
Run Code Online (Sandbox Code Playgroud)

列举始终/曾经线程安全的?

//EXAMPLE
foreach(Object o in list)
{
   //do something with o
 }
Run Code Online (Sandbox Code Playgroud)

可以写入和读出一个特定的领域不断导致损坏的读取(场的一半被改变,一半仍是不变的)?

感谢您的所有答案和时间.

编辑:我的意思是如果所有线程只读取和使用(不写或更改)对象.(除了最后一个问题,显然我的意思是线程既读又写).因为我不知道普通访问或枚举是否是线程安全的.

c# arrays string enumeration thread-safety

24
推荐指数
2
解决办法
1万
查看次数

NET 4.0 SpinWait方法与4.0之前的SpinWait()有何不同?

MSDN "线程安全集合.NET Framework 4"声明:

"一些并发集合类型使用轻量级同步机制,如SpinLock,SpinWait, SemaphoreSlimCountdownEvent,它们是.NET Framework 4中的新增功能"

虽然MSDN网站告诉SpinWaitwas可用于.NET 1.1,而另一篇MSDN文章从.NET 4.0启动SpinWaitwas

好吧,好奇心来自Lee Grissom的评论,以回答SynchronizedCollection与其他并发集合之间的区别是什么?:

"@Matt,.NET4并发类使用SpinWait对象来解决线程安全而不是Monitor.Enter/Exit(又称Critical部分)?"

以及第一个NSDN引用说明这SpinWait是.NET 4.0的新功能

那么,它是新的还是不是?
如果新的那么如何?

.net c# concurrency multithreading spinwait

3
推荐指数
1
解决办法
609
查看次数