Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
1 / 1 / 3
Регистрация: 28.10.2017
Сообщений: 103
1

Назначение параметров в многопоточной программе

25.01.2018, 12:13. Просмотров 408. Ответов 6
Метки нет (Все метки)

Ребят от чего зависит вот эти параметры в моей программе?
C#
1
2
3
Mythread t1 = new Mythread("Поток 1", 10, t);
            Mythread t2 = new Mythread("Поток 2", 1, t);
            Mythread t3 = new Mythread("Поток 3", 12, t);
т.е после потоков зачем нужны значения? и какие они будут у меня?
Вот сам код программы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Threading;
 
namespace ConsoleApp15
{
    delegate void d1(Zavod[] arr);
    delegate void d2(Zavod[] arr);
    delegate void d3();
    class Orgaz
    {
        public string Fam { get; set; }
        public string Name { get; set; }
        public string Otch { get; set; }
        public int godroj { get; set; }
        public int bazrazmer { get; set; }
        public Orgaz() { }
        public Orgaz(string Fam = "", string Name = "", string Otch = "", int godroj = 0, int bazrazmer = 0)
        {
            this.Fam = Fam;
            this.Name = Name;
            this.Otch = Otch;
            this.godroj = godroj;
            this.bazrazmer = bazrazmer;
        }
        public virtual void Print()
        {
            Console.WriteLine("\n\nФамилия директора организации : {0}\nИмя директора организации: {1}\nОтчество директора организации: {2}\nВозраст организации: {3}\nБазовый размер заработной платы организации: \n\n", Fam, Name, Otch, godroj, bazrazmer);
        }
    }
    class Scomp : Orgaz
    {
        public string sc { get; set; }
        public Scomp(string Fam, string Name, string Otch, int godroj, int bazrazmer,
            string sc) : base(Fam, Name, Otch, godroj, bazrazmer)
        {
            this.Fam = Fam;
            this.Name = Name;
            this.Otch = Otch;
            this.godroj = godroj;
            this.bazrazmer = bazrazmer;
            this.sc = sc;
        }
    }
    class Ncomp : Scomp
    {
        public string nc { get; set; }
        public Ncomp(string Fam, string Name, string Otch, int godroj, int bazrazmer,
            string sc, string nc) : base(Fam, Name, Otch, godroj, bazrazmer, sc)
        {
            this.Fam = Fam;
            this.Name = Name;
            this.Otch = Otch;
            this.godroj = godroj;
            this.bazrazmer = bazrazmer;
            this.sc = sc;
            this.nc = nc;
        }
    }
    class Zavod : Ncomp
    {
        public event d1 Sob1;
        public event d2 Sob2;
        public event d3 Sob3;
        public string zavodd { get; set; }
        public Zavod(string Fam = "", string Name = "", string Otch = "", int godroj = 0, int bazrazmer = 0, string sc = "", string nc = "", string zavodd = "") : base(Fam, Name, Otch, godroj, bazrazmer, sc, nc)
        {
            this.Fam = Fam;
            this.Name = Name;
            this.Otch = Otch;
            this.godroj = godroj;
            this.bazrazmer = bazrazmer;
            this.sc = sc;
            this.nc = nc;
            this.zavodd = zavodd;
        }
        public override void Print()
        {
            Sob3 = delegate
            {
                Console.WriteLine("\n\nФамилия директора организации : {0}\nИмя директора организации: {1}\nОтчество директора организации: {2}\nВозвраст организации: {3}\nЗаработная плата организации: {4}\nСтраховая компания: {5}\nНефтегазовая компания: {6}\nЗавод: {7}", Fam, Name, Otch, godroj, bazrazmer, sc, nc, zavodd);
            };
            Sob3();
        }
        public void Mprin(Zavod[] arr)
        {
            Sob1 = delegate
            {
                StreamReader read = new StreamReader("Volga.txt");
                for (int i = 0; i < arr.GetLength(0); i++)
                {
                    string fm = read.ReadLine();
                    string im = read.ReadLine();
                    string ot = read.ReadLine();
                    int v = int.Parse(read.ReadLine());
                    int zp = int.Parse(read.ReadLine());
                    string s = read.ReadLine();
                    string nk = read.ReadLine();
                    string zd = read.ReadLine();
                    arr[i] = new Zavod(fm, im, ot, v, zp, s, nk, zd);
                }
                Sob2 = delegate
                {
                    for (int i = 0; i < arr.GetLength(0); i++)
                    {
                        Console.WriteLine("\n\nИнформация об организации - {0}\n", i + 1);
                        Console.WriteLine("Фамилия директора организации: {0}", arr[i].Fam);
                        Console.WriteLine("Имя директора организации: {0}", arr[i].Name);
                        Console.WriteLine("Отчество директора организации: {0}", arr[i].Otch);
                        Console.WriteLine("Возраст организации: {0}", arr[i].godroj);
                        Console.WriteLine("Заработная плата организации: {0}", arr[i].bazrazmer);
                        Console.WriteLine("Страховая компания: {0}", arr[i].sc);
                        Console.WriteLine("Нефтегазовая компания: {0}", arr[i].nc);
                        Console.WriteLine("Завод: {0}", arr[i].zavodd);
                    }
                };
                Sob2(arr);
            };
            Sob1(arr);
        }
        public static Zavod operator +(Zavod a, Zavod b)
        {
            Zavod result = new Zavod();
            result.godroj = a.godroj + b.godroj;
            result.bazrazmer = a.bazrazmer + b.bazrazmer;
 
            return result;
        }
    }
    class Mythread
    {
        Thread thread;
        Zavod[] arr;
        public Mythread(string name, int n, Zavod[] arr) //Конструктор получает имя функции и номер до кторого ведется счет
        {
            this.arr = arr;
            thread = new Thread(this.func);
            thread.Name = name;
            thread.Start(n); //передача параметра в поток
        }
        void func(object n)
        {
            int kol = 0;
            for (int i = 0; i < arr.GetLength(0); i++)
            {
                if (arr[i].godroj >= (int)n)
                {
                    kol++;
                    Console.WriteLine("Выполняется поток с именем - {0}", Thread.CurrentThread.Name);
                }
                Thread.Sleep(0);
            }
            Console.WriteLine("Кол-во записей больше {0} - {1} Выполнил поток - {2}\n\n", n, kol, Thread.CurrentThread.Name);
            Console.WriteLine("{0} завершился", Thread.CurrentThread.Name);
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            Zavod test = new Zavod("Скорябкин", "Артём", "Валерьевич", 25, 560000, "Кентавр", "PTT Public Company", "Евросеть");
            Zavod test2 = new Zavod("Кучинский", "Владислав", "Андреевич", 19, 320000, "Белнефтестрах", "Marathon Petroleum", "Альянс");
            Zavod test3 = test + test2;
            Console.WriteLine("Информация об организациях");
            test.Print();
            test2.Print();
            Console.WriteLine("Сумма лет двух организаций: {0}", test3.godroj);
            Console.WriteLine("Зарабатная плата двух организаций: {0}", test3.bazrazmer);
            Console.WriteLine("\nНажмите любую клавишу для продолжения...");
            Console.ReadKey();
            Console.Clear();
            Zavod[] t = new Zavod[3];
            Zavod testss = new Zavod();
            testss.Mprin(t);
            Console.WriteLine("Нажмите любую клавишу для продолжения...");
            Console.ReadKey();
            Console.Clear();
            Console.WriteLine("Потоки: \n");
            Mythread t1 = new Mythread("Поток 1", 10, t);
            Mythread t2 = new Mythread("Поток 2", 1, t);
            Mythread t3 = new Mythread("Поток 3", 12, t);
            Console.ReadKey();
 
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2018, 12:13
Ответы с готовыми решениями:

Метод For в многопоточной программе
Почему данный код не компилируется и как исправить ошибку? using System; using...

Умножение матриц в многопоточной программе
class Program { static int value = 50; static void Main(string args) ...

Одновременный инкремент в многопоточной программе
Подпрограмма выполняется в многопоточном режиме. i, j - глобальные переменные. Каждый поток...

Медленная работа и ловля исключений в многопоточной программе
Здравствуйте. Сразу хочу предупредить, что это мой первый проект поэтому судите строго, но не...

6
Модератор
873 / 782 / 326
Регистрация: 03.02.2015
Сообщений: 5,077
Записей в блоге: 9
25.01.2018, 12:28 2
Apathy2301, У Вас в строке 135 комментарии к конструктору Вашего класса Mythread.
Цитата Сообщение от Apathy2301 Посмотреть сообщение
//Конструктор получает имя функции и номер до кторого ведется счет
0
1 / 1 / 3
Регистрация: 28.10.2017
Сообщений: 103
25.01.2018, 12:32  [ТС] 3
а как узнать этот номер? и какой он будет тут?
0
Модератор
873 / 782 / 326
Регистрация: 03.02.2015
Сообщений: 5,077
Записей в блоге: 9
25.01.2018, 12:34 4
Apathy2301, без понятия, я логику работы Вашего кода не знаю.
0
Эксперт .NET
14415 / 10869 / 2872
Регистрация: 17.09.2011
Сообщений: 18,393
25.01.2018, 12:35 5
Цитата Сообщение от Apathy2301 Посмотреть сообщение
от чего зависит вот эти параметры в моей программе?
Наверное, это вы нам должны сказать?
0
1 / 1 / 3
Регистрация: 28.10.2017
Сообщений: 103
25.01.2018, 12:37  [ТС] 6
последняя строчка где идёт вывод была скопирована с интернета с сайта одного там тоже описывается также вот пример:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System;
using System.Threading;
 
namespace ConsoleApplication1
{
    class Program
    {
        class myThread 
        {
            Thread thread;
 
            public myThread(string name, int num) //Конструктор получает имя функции и номер до кторого ведется счет
            {
 
                thread = new Thread(this.func);
                thread.Name = name;
                thread.Start(num);//передача параметра в поток
            }
            
            void func(object num)//Функция потока, передаем параметр
            {
                for (int i = 0;i < (int)num;i++ ) 
                {
                    Console.WriteLine(Thread.CurrentThread.Name + " выводит " + i);
                    Thread.Sleep(0);
                }
                Console.WriteLine(Thread.CurrentThread.Name + " завершился");
            }
        
        
        }     
             
        static void Main(string[] args)
        {
            myThread t1 = new myThread("Thread 1", 6);
            myThread t2 = new myThread("Thread 2", 3);
            myThread t3 = new myThread("Thread 3", 2);
 
            Console.Read();
 
        }
 
    }
}
но откуда берутся эти числа не написано, поэтому думал тут помогут
0
Модератор
873 / 782 / 326
Регистрация: 03.02.2015
Сообщений: 5,077
Записей в блоге: 9
25.01.2018, 12:43 7
Цитата Сообщение от Apathy2301 Посмотреть сообщение
но откуда берутся эти числа не написано, поэтому думал тут помогут
Тут по коду подскажут, а откуда и кто взял значения параметров этих методов, можно только гадать)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.01.2018, 12:43

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ошибка в многопоточной программе
Здравствуйте! Есть простая программа, которая выдает список всех папок в заданной папке (включая...

Безопасный список в многопоточной программе
Итак, пусть есть некоторая программа. Предположим, что это игровой сервер. Необходимо вести в...

Функция с fprintf в многопоточной программе
Насколько я знаю, fprintf не многопоточен. Т.е. я не могу просто взять и использовать fprintf() в...

Устранение узкого места в многопоточной программе
Доброго времени суток, столкнулся с узким местом при разработке много поточной программы на питоне....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.