Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Запуск static функции одновременно из разных мест


Автор: bmpa 2.3.2008, 15:42
Что будет, если из нескольких мотоков используется одновременно одна функция.

Потоки будут ждать её освобождения или будет одновременное выполнение. Будут ли ошибки при одновременном выполнении?

Автор: Injener 2.3.2008, 15:57
Если не будешь синхронизировать должным образом свои потоки, то глюки гарантированы smile 

Автор: Voyager 3.3.2008, 11:59
Цитата(bmpa @  2.3.2008,  15:42 Найти цитируемый пост)
Будут ли ошибки при одновременном выполнении?

Возможны. Нужен механизм синхронизации/залочивания.

Автор: Дрон 3.3.2008, 20:27
Ошибок самих по себе не будет, но возможны неправильные результаты работы.

Чтобы исключить одновременное выполнение я делаю (и MSDN рекомендует) примерно вот так:
Код

class MyClass
{

    private static object syncObject = new Object();

    public static void SomeMethod()
    {
         lock(syncObject)
         {
                // а вот тут что-нибудь опасное для многопоточности
         }
    }

}


При этом внутрь lock не обязательно заключать весь код метода, достаточно лишь определить, что именно представляет угрозу при одновременном исполнении.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)