1
我有這個代碼,我不知道,如果它是線程安全或不!如何使線程安全,而不是線程安全
如果是線程安全的,如何使它並不安全,反之亦然
namespace ThreadSafeTest
{
class Program
{
static void Main(string[] args)
{
Task.Factory.StartNew(() =>
{
for (int i = 0; i < 1000; i++)
{
var user = new User() { Id = i };
method(user);
}
});
Task.Factory.StartNew(() =>
{
for (int i = 1000; i < 2000; i++)
{
var user = new User() { Id = i };
method(user);
}
});
Console.ReadLine();
}
static void method(User user)
{
Console.WriteLine([email protected]"the {user.Id} is {user.Id}{user.Id}");
}
}
public class User
{
public int Id { get; set; }
}
}
是複雜的理解這個概念 感謝
確定list.add不是線程安全的,但該方法仍然是線程安全的。 bcs用戶標識字段從用戶獲取其值。我的問題是關於如何使這種方法不安全?在某些地方我用ref讀取它會是不安全的,但我不確定 –
'method'在我顯示的版本中**不是**線程安全的。如果'list.Add'不是線程安全的,並且'method'調用它,那麼(根據定義)'method'也不是線程安全的。 – mjwills
'我讀過的某個地方會不安全,但我不確定你在哪裏讀過這些內容? – mjwills