【发布时间】:2017-09-18 01:37:14
【问题描述】:
我应该为线程锁定在c#中调用线程安全方法的部分代码吗?
例如:
T Eject (bool? state)
{
lock (this)
{
//somecode
return _objects[i];
}
}
public T TakeNew()
{
return Eject(null);
}
public T Reserve()
{
return Eject(true);
}
或者我应该像这样锁定返回:
lock(this)
{
return Eject(true);
}
如果我锁定所有调用 Eject(true),我是否需要锁定方法 Eject 块?我认为,如果我锁定方法和方法调用,它会造成线程死锁。在这种情况下,创建线程安全代码的更好方法是什么?
感谢您的回答!
【问题讨论】:
标签: c# multithreading deadlock