首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >线程同步

线程同步
EN

Stack Overflow用户
提问于 2010-01-19 06:51:05
回答 2查看 658关注 0票数 0

我有一个对象列表,对于我想要运行一个完全独立的线程(线程安全性)的每个对象,比如.我将在while循环中从我的列表中选择一个对象并运行一个线程,然后对于下一个对象运行下一个threads...all线程应该是同步的,这样它们共享的资源(值/连接(关闭/打开))就不会改变……

EN

回答 2

Stack Overflow用户

发布于 2010-01-19 07:03:10

启动每个对象的线程并不一定明智;您可能应该有少量的工作线程从列表(或者更好的是Queue<T>)中选择项,同步对列表/队列的访问。在this thread中可以找到线程安全队列的一个示例。

一旦您有了一个工作项,就没有什么神奇的方法可以让您编写的其余代码(用于处理)线程安全。保持简单的一种明智的方法是不可变--要么是真正的不可变(不能更改的项不能更改),要么是简单的不改变对象。当然,您可以在工作项周围实现锁定,但这只有在所有代码使用相同的锁定策略(这很难执行)时才有帮助。

票数 2
EN

Stack Overflow用户

发布于 2010-01-19 07:07:39

我将从

循环中的列表中选择一个对象,然后运行一个线程,然后对下一个对象运行下一个线程。

如果我真的希望每个对象都有一个线程,而我可能不会这样做,我会创建一个这样的类:

代码语言:javascript
复制
class ObjectProcessingThread
{
Thread processingThread = new Thread();
public TargetObject { get; set;}

public Start()
{
    //start the processing thread with threadEntryPoint as the work the thread will do
} 

private threadEntryPoint
{
   //do stuff with targetObject
}
}

然后在while循环中为每个对象新建一个ObjectProcessingThread,设置它的TargetObject属性,然后调用Start。

所有线程应该是同步的,这样它们共享的资源(值/连接(关闭/打开))就不会改变……

如果你不想改变价值观,就不要改变它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2091651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档