Язык программирования C#

На некоторых олимпиадах по программированию используют язык C#. Примеры: олимпиада МАИ по программированию.

В олимпиадах на TopCoder сейчас разрешены: C++, Java, C# и VB.NET.

Многопоточность

Финализатор C#

Финализатор - это метод класса, который автоматически вызывается средой исполнения в промежутке времени между моментом, когда объект этого класса опознаётся сборщиком мусора как неиспользуемый, и моментом удаления объекта (освобождения занимаемой им памяти). Финализатор для конкретного объекта всегда выполняется после того, как программа прекращает использовать данный объект и до того, как занимаемая объектом память будет освобождена сборщиком мусора. Удобно считать, что финализатор вызывается непосредственно перед удалением объекта из памяти, хотя это обычно не гарантируется.

lock

class Account {
  decimal balance;
  private Object thisLock = new Object();

  public void Withdraw(decimal amount) {
    lock (thisLock) {
      if (amount > balance) {
        throw new Exception("Insufficient funds");
      }
      balance -= amount;
    }
  }
}

Ключевое слово lock не позволит одному потоку войти в важный раздел кода в тот момент, когда в нем находится другой поток. При попытке входа другого потока в заблокированный код потребуется дождаться снятия блокировки объекта.

Блокировка потоков. lock.. . Синхронизация потоков. Синхронизация процессов.