Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> type constructor deadlock 
:(
    Опции темы
nmn
Дата 2.11.2009, 02:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: 1
Всего: 1



Здравствуйте

Код

using System;
using System.Threading;

namespace TypeConstructorLock
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            Thread threadA = new Thread(new ThreadStart(TouchStatic1));
            threadA.Name = "Thread A";
      
            Thread threadB = new Thread(new ThreadStart(TouchStatic2));
            threadB.Name = "Thread B";
 
            threadA.Start();
            threadB.Start();
            threadA.Join();
            threadB.Join();
        }
 
        static void TouchStatic1() { string s = Static1.Message; }
        static void TouchStatic2() { string s = Static2.Message; }
    }

    class Static1
    {
        static Static1()
        {
            Console.WriteLine("Begin Static1 .cctor on thread {0}", 
                Thread.CurrentThread.Name);
            Thread.Sleep(5000);
            Console.WriteLine("Static1 has a message from Static2: {0}", 
                Static2.Message);      
            message = "Hello From Static1";
            Console.WriteLine("Exit Static1 .cctor on thread {0}", 
                Thread.CurrentThread.Name);
        }
 
        static public string Message { get { return message; } }
        static string message = "blank";
    }
 
    class Static2
    {
        static Static2()
        {
            Console.WriteLine("Begin Static2 .cctor on thread {0}", 
                Thread.CurrentThread.Name);
            Thread.Sleep(5000);
            Console.WriteLine("Static2 has a message from Static1: {0}", 
                Static1.Message);         
            message = "Hello From Static2";
            Console.WriteLine("Exit Static2 .cctor on thread {0}", 
                Thread.CurrentThread.Name);
        }
 
        static public string Message { get { return message; } }
        static string message = "blank";    
    }
}



объясните пожалуйста мне внутренности этой ситуации smile
получается так что перед вызовом конструктора типа используется блокирующая секция, но каким образом разрешается deadlock?

Это сообщение отредактировал(а) nmn - 2.11.2009, 02:44
PM Skype   Вверх
PashaPash
Дата 2.11.2009, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(nmn @  2.11.2009,  02:39 Найти цитируемый пост)
получается так что перед вызовом конструктора типа используется блокирующая секция, но каким образом разрешается deadlock?

Судя по поведению, никакий блокирующей секции там нет.


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0443 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.