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

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

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

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

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

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

До листал книжку до этого раздела.
Посмотрел примеры. Подумал как бы использовать эту многопоточность на простом примере.

В общем у меня есть класс МашинкаЕдит, у машинки есть расход и количество бензина в бензобаке.

каждый виток цикла. количество бензина -= расход
расход задается в конструкторе. количество бензина у всех машин одно и тоже 10 литров.

странность вот в чем у меня в консоле расход у обоих машин показывается одинаковый 1 литр, тогда как я задавал для Камазика 2 литра а для Москвича 1.

Почему вдруг стал расход в обоих случаях 1 литр?? Может дело в многопоточности или я где-то недоглядел.

Код:
using System;
using System.Collections.Generic;
using System.Text;

using System.Threading;


namespace Threading1
{

    public class MahinkaEdet 
    {
        public int path = 0;
        public int bezinka = 10;
        public string name ="Шайтан арба";

        private int rasxod = 1;

        public MahinkaEdet()
        {
            Console.WriteLine("Конструктор по умолчанию MahinkaEdet");
        }

        public MahinkaEdet(string name, int rasxodBizinka )
        {
            Console.WriteLine("Конструктор не умолчанию MahinkaEdet ({0})", name);
            this.name = name;
        }

        ~MahinkaEdet() 
        {
            Console.WriteLine("Деструктор по умолчанию MahinkaEdet");
        }

        public void CarGo() 
        {
            while (bezinka > 0) {
                Thread.Sleep(500);
                path++;
                bezinka -= rasxod;
                Console.WriteLine("Машина {0} едет. Бензина оталось {1}. Расход {2}", name, bezinka, rasxod);
            }
            Console.WriteLine("Машина {0} остановилась. Бензина нет.", name );
        }

    }

    class Program
    {
        static void Main(string[] args)
        {
            MahinkaEdet kamazik = new MahinkaEdet("Камазик", 2);
            MahinkaEdet moskvich402 = new MahinkaEdet("Москвич 402", 1);


            Thread t1 = new Thread(new ThreadStart(kamazik.CarGo));
            Thread t2 = new Thread(new ThreadStart(moskvich402.CarGo));



            t1.Start();
            t2.Start();

            Console.ReadLine();

        }
    }
}
IT-Lopata вне форума Ответить с цитированием
Старый 01.04.2014, 02:10   #2
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Код:
public MahinkaEdet(string name, int rasxodBizinka )
        {
            Console.WriteLine("Конструктор не умолчанию MahinkaEdet ({0})", name);
            this.name = name;
        }
Параметр "rasxodBizinka" успешно проигнорирован
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 01.04.2014, 02:22   #3
IT-Lopata
7 - классник
Форумчанин
 
Аватар для IT-Lopata
 
Регистрация: 27.03.2014
Сообщений: 181
По умолчанию

Цитата:
Параметр "rasxodBizinka" успешно проигнорирован
Я чуть позже понял что где сморозил. Но все равно спс вдруг бы не нашел D
IT-Lopata вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
многопоточное программирование deniscatch Свободное общение 3 14.03.2014 11:21
Многопоточное программирование ser70 Общие вопросы C/C++ 11 18.03.2013 11:03
многопоточное программирование jul01 Помощь студентам 0 10.06.2011 17:47
многопоточное программирование schnaps Общие вопросы Delphi 0 27.04.2009 19:09
Многопоточное программирование madmax08 Общие вопросы .NET 4 15.07.2008 23:58