суббота, 23 апреля 2011 г.

C# - аналог ключевого слова synchronized для методов в Java

Иногда нужно, чтобы некоторый метод объекта выполнялся в каждый момент времени только одним потоком (т.е. чтобы вызовы к данному методу объекта сериализовывались, т.е. ставились в очередь). Для такого контроля конечно можно использовать, например, семафор, но в Java было предусмотрено специальное ключевое слово - synchronized. В C# есть аналогичная конструкция, которая, правда, не является частью языка:
using System.Runtime.CompilerServices;

        [MethodImplAttribute(MethodImplOptions.Synchronized)]
        protected void someSyncMethod() { ... }
Также как и в Java, синхронизированными могут быть помечены сразу несколько методов класса, при этом, т.к. при вызове любого синхронизированного метода блокируется объект-хозяин, в любой момент времени возможно будет выполнение лишь одного из них.

Комментариев нет:

Отправить комментарий