1
我有下面的代碼正在多線程的業務邏輯運行:併發.NET中的一個功能
using System;
using System.Threading.Tasks;
namespace Test
{
class Program
{
static void Main(string[] args)
{
var biz1 = new Biz { Some = 1, Value = "a" };
var biz2 = new Biz { Some = 2, Value = "b" };
var foo = new Foo();
//thread 1
new Task(() => foo.Run(biz1)).Start();
//thread 2
new Task(() => foo.Run(biz2)).Start();
//more threads here for other Biz objects....
Console.Read();
}
}
public class Biz
{
public int Some { get; set; }
public string Value { get; set; }
}
public class Foo
{
public void Run(Biz biz)
{
//base on the biz object do some task here
}
}
}
的biz
對象不被隨時在穿線
問題改變了:
- 是
foo.Run
線程安全嗎? - 是不是更好地實例化個別
Foo
對象來運行每個Biz
對象(Run
是Foo
中的唯一函數)?
那麼'Foo'是否被'Run'改變了? – 2013-03-18 09:19:29
如果foo.Run是線程安全的,如果我們不知道它的實際作用是不可能的 – ken2k 2013-03-18 09:20:57
@Jon Skeet,'Foo'不會被'Run'改變 – James 2013-03-18 09:23:26