Я начинаю изучать Standard ML, и теперь я пытаюсь использовать компилятор Standard ML из Нью-Джерси.
Теперь я могу использовать интерактивный цикл, но как я могу скомпилировать исходный файл в автономный исполняемый файл?
В C, например, можно просто написать
Очень часто используется частный статический объект только для чтения для блокировки в многопоточности.
Я понимаю, что private уменьшает количество точек входа в объект блокировки за счет ужесточения инкапсуляции и, следовательно, доступа к наиболее важным. Но почему статическое? В конце концов, поле используется только внутри моего класса, и я мог бы также просто используйте вместо этого: Есть комментарии? ОБНОВЛЕНИЕ: В качестве примера я вставил этот код (просто пример). Я мог бы использовать статический или нестатический шкафчик для этого, и оба будут работать нормально. Учитывая ответ ниже, я должен скорее определять свой шкафчик следующим образом? (Извините, у меня собеседование на следующей неделе, и мне нужно знать все детали :) А вот код: Спасибо $ gcc hello_world.
Я понимаю, что private уменьшает количество точек входа в объект блокировки за счет ужесточения инкапсуляции и ...
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();
}