Блокировка критического раздела в объекте используется через несколько потоков

Все выбирают то, что они хотят сделать с этими числами. Я соблазнился к разъединениям вызова a.b.c, так как это довольно глупо так или иначе. Однако что я видел по последним 25 +, годы разработки имеют тенденцию прокладывать себе путь. Скажем, Ваш номер версии 1.2.3.

Эти "1" указывает на "главный" пересмотр. Обычно это - первоначальная версия, большое изменение набора функций или перезапись значительных частей кода. Как только набор функций определяется и по крайней мере частично реализовал Вас, переходят к следующему числу.

Эти "2" указывает на выпуск в ряду. Часто мы используем это положение, которое будет схвачено на функциях, которые не сделали его в последней главной версии. Это положение (2) почти всегда указывает, что функция добавляет, обычно с исправлениями ошибок.

"3" в большинстве магазинов указывает на выпуск/исправление ошибки патча. Почти никогда, по крайней мере, на коммерческой стороне, не делает это указывает, что значительная функция добавляет. Если функции обнаруживаются в положении 3 тогда, это, вероятно, потому что кто-то регистрировал что-то, прежде чем мы знали, что должны были сделать выпуск исправления ошибки.

Вне "3" положение? У меня нет подсказки, почему люди делают такую вещь, это просто становится более сбивающим с толку.

Особенно часть OSS там бросает все это из ненормального. Например, версия 10 Trac на самом деле 0.10. X.X. Я думаю много людей в уверенности мира или отсутствия OSS или просто не хочу объявлять, что им сделали главную версию.

10
задан Nathan 10 December 2009 в 14:45
поделиться

2 ответа

Мне нравится. Я бы также отметил LockingVar как доступный только для чтения.

9
ответ дан 3 December 2019 в 22:00
поделиться

Да, с помощью примера кода вы получите глобальную критическую секцию метода для всех экземпляров класса.

Если это то, что вы ищете (и у вас есть чтобы спросить себя, действительно ли вы хотите, чтобы этот метод одновременно выполнялся только одним потоком), вы также можете использовать [MethodImpl (MethodImplOptions.Synchronized)] , который дает вам практически ту же функцию.

[MethodImpl(MethodImplOptions.Synchronized)]
public static void MyPublicMethod()
{
     // Do some critical code
}

Примечание: это означает запись lock (this) {} , если это метод экземпляра, или lock (typeof (MyClass)) , если это метод класса (статический). Оба не одобряют, поэтому ваш шаблон lock (obj) лучше.

5
ответ дан 3 December 2019 в 22:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: