다중 스레딩에서 잠금을 위해 개인 정적 읽기 전용 개체를 사용하는 것은 매우 일반적입니다. 개인은 캡슐화를 조여 잠금 개체에 대한 진입 점을 줄이고 따라서 가장 필수적인 항목에 액세스 할 수 있음을 이해합니다.
하지만 왜 정적일까요?
private static readonly object Locker = new object();
마지막에 필드는 내 클래스 내에서만 사용되며 대신 이것을 사용할 수도 있습니다.
private readonly object Locker = new object();
다른하실 말씀 있나요?
최신 정보:
예를 들어이 코드를 붙여 넣었습니다 (예제). 나는 이것에 정적 또는 비 정적 사물함을 사용할 수 있으며 둘 다 잘 작동합니다. 아래의 답변을 고려할 때 내 사물함을 이와 같이 정의해야합니까? (미안하지만 다음 주에 인터뷰가 있고 모든 세부 사항을 알아야합니다. :)
private readonly object Locker = new object();
다음은 코드입니다.
private int _priceA;
private int _priceB;
private EventWaitHandle[] _waithandle;
private readonly IService _service;
//ctor
public ModuleAViewModel(IService service)
{
_service = service;
_modelA = new ModelA();
_waithandle = new ManualResetEvent[2];
_waithandle[0] = new ManualResetEvent(false);
_waithandle[1] = new ManualResetEvent(false);
LoadDataByThread();
}
private void LoadDataByThread()
{
new Thread(() =>
{
new Thread(() =>
{
lock (Locker)
{
_priceA = _service.GetPriceA();
}
_waithandle[0].Set();
}).Start();
new Thread(() =>
{
lock (Locker)
{
_priceB = _service.GetPriceB();
}
_waithandle[1].Set();
}).Start();
WaitHandle.WaitAll(_waithandle);
PriceA = _priceA;
PriceB = _priceB;
}).Start();
}
감사
_service
하고 _waithandle
위치를? 예? 공전? 다른? 즉 수 , 예를 들어, ... 원격 서버에 의도적으로 동기화 액세스 할 수