Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2014, 07:32   #1
IT-Lopata
7 - классник
Форумчанин
 
Аватар для IT-Lopata
 
Регистрация: 27.03.2014
Сообщений: 181
Вопрос много потоков и одни данные

Есть такой код. ниже я привожу сильно упрощенный вариант, но описывающий проблему.
мне нужно разрулить доступ к данным (int humans_age[] ) из потоков, чтобы они не мешали друг другу использовать один массив на всех.

Код:
    class Earth
    {

        int[] humans_age = new int[100];
        Thread[] LifeLine = new Thread[100];

        public void Start()
        {
            for (int i = 0; i < 100; i++)
            {
                LifeLine[i] = new Thread(new ParameterizedThreadStart(ThreadRoutineForOneHuman));
                lifeLine[i].start(i);

            }
        }

        public void ThreadRoutineForOneHuman(object obj)
        {
            int idHuman = (obj as int);
            while (humans_age[idHuman] < 100)
            {
                humans_age[idHuman]++;
            }

        }
IT-Lopata вне форума Ответить с цитированием
Старый 10.05.2014, 09:20   #2
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

используй lock

Код:
private Object lockObject = new Object();

lock (lockObject)
{
 //твой массив
}

Последний раз редактировалось coNsept; 10.05.2014 в 10:09.
coNsept вне форума Ответить с цитированием
Старый 10.05.2014, 16:57   #3
IT-Lopata
7 - классник
Форумчанин
 
Аватар для IT-Lopata
 
Регистрация: 27.03.2014
Сообщений: 181
По умолчанию

я понял что lock нужно использовать, но я не понял зачем мне создавать объект, у меня внутри класса создаются потоки в том же классе есть массив к которому они должны получать доступ. как это вяжется с private Object lockObject = new Object() ?
IT-Lopata вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многократное использование потоков(пул потоков) ProgrammistRT Общие вопросы Delphi 10 06.04.2014 13:42
одни ишибки delfin07 C++ Builder 6 06.05.2012 21:07
много потоков и один stringlist m.a.x.i.m Общие вопросы Delphi 1 09.01.2010 22:41
Дилема: много екзешников или одни? Fainder Общие вопросы Delphi 8 25.02.2007 15:59