С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/35: Рейтинг темы: голосов - 35, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 29.06.2010
Сообщений: 35

Многопоточное приложение

17.08.2011, 01:13. Показов 7506. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Требуется разработать многопоточное приложение (в качестве средства разработки следует использовать Microsoft Visual Studio). Приложение состоит из 4 потоков:
• “main” (главный поток): запускает потоки “inc”, “dec” и “print”. Далее, поток постоянно (каждые 10 миллисекунд) проверяет значение переменной ACCOUNT и завершает процесс, если ACCOUNT вышел за границы диапазона [-10000, +10000].
• “inc” – поток время от времени (паузы выбираются случайным образом от 100 миллисекунд и до 3 секунд включительно) увеличивает значение переменной ACCOUNT на некоторую случайную величину (например от 1 до 100).
• “dec” – поток время от времени (паузы выбираются случайным образом от 100 миллисекунд и до 3 секунд включительно) уменьшает значение переменной ACCOUNT на некоторую случайную величину (например от 1 до 100).
• “print” – выводит на экран новое значение переменной ACCOUNT (как только оно изменилось).

Как написать? Помогите, пожалуйста, с потоками совсем слаб
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.08.2011, 01:13
Ответы с готовыми решениями:

консольное многопоточное приложение на си#
Привет! Помогите пожалуйста, не могу разобраться с задачей( задача следующая: Написать консольное многопоточное приложение для Windows...

Многопоточное консольное приложение C#
Здравствуйте,подскажите пожалуйста как сделать это задание? Потоки знаю,сделать смогу. Не знаю как сделать ООП и не понимаю с статистикой...

Многопоточное серверное приложение на C#
Здравствуйте практикуюсь в написании клиент серверного приложения. С помощью MSDN пытаюсь написать сервер который будет работать в...

4
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
17.08.2011, 01:28
http://www.rsdn.ru/article/dotnet/CSThreading1.xml
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
17.08.2011, 07:30
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
namespace ConsApp_ThreeThreads
{
    class Program
    {
        static void Main(string[] args)
        {
            Random rnd = new Random();
            long account = 0;
            AutoResetEvent accountChangedEv = new AutoResetEvent(false);
 
            var incThread = new Thread(new ThreadStart(() =>
            {
                while (!IsFinished(account))
                {
                    Interlocked.Add(ref account, rnd.Next(1, 100));
                    accountChangedEv.Set();
 
                    Thread.Sleep(rnd.Next(100, 3001));
                }
            }));
 
            var decThread = new Thread(new ThreadStart(() =>
            {
                while (!IsFinished(account))
                {
                    Interlocked.Add(ref account, -rnd.Next(1, 100));
                    accountChangedEv.Set();
 
                    Thread.Sleep(rnd.Next(100, 3001));
                }
            }));
 
            var printThread = new Thread(new ThreadStart(() =>
            {
                while (!IsFinished(account))
                {
                    accountChangedEv.WaitOne();
                    Console.WriteLine("Account изменено на " + account);
                }
            }));
 
            printThread.Start();
            incThread.Start();
            decThread.Start();
 
            incThread.Join();
            decThread.Join();
            printThread.Join();
 
            Console.WriteLine("Работа завершена!");
            Console.ReadKey();
        }
 
        static bool IsFinished(long account)
        {
            return account < -10000 || account > 10000;
        }
    }
}
0
Заблокирован
17.08.2011, 07:53
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
using System;
 
namespace ConsoleApplication1
{
    class Program
    {
        static  Random r;
        static int ACCOUNT { get; set; }
       
        static void Main(string[] args)
        {
            r = new Random();            
            new System.Threading.Thread(inc).Start();
            new System.Threading.Thread(dec).Start();
            new System.Threading.Thread(print).Start();
 
            while (true)
            {
                if (ACCOUNT > 10000 || ACCOUNT < -10000)
                    Environment.Exit(0);
                System.Threading.Thread.Sleep(10);
            }
 
        }
 
      
        static void inc()
        {
            while (true)
            {
                ACCOUNT += r.Next(1, 101);
                System.Threading.Thread.Sleep(r.Next(100, 3001));
            }
            
        }
 
        static void dec()
         {
             while (true)
             {
                 ACCOUNT -= r.Next(1, 101);
                 System.Threading.Thread.Sleep(r.Next(100, 3001));
             }
 
         }
 
        static void print()
        {
            int temp = 0;
            while (true)
            {
                if (temp != ACCOUNT)
                {
                    Console.WriteLine(" Новое значение ACCOUNT = {0}", ACCOUNT);
                    temp = ACCOUNT;
                }
                
                System.Threading.Thread.Sleep(1000);
            }
 
        }
    }
}
0
0 / 0 / 0
Регистрация: 29.06.2010
Сообщений: 35
17.08.2011, 10:37  [ТС]
Спасибо большое! Сейчас буду разбираться
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.08.2011, 10:37
Помогаю со студенческими работами здесь

Довести до ума многопоточное приложение
Добрый день. Вначале я бы хотел принести извинения перед программистами (а заодно и теми кто считает себя таковыми) за то чудовище которое...

Многопоточное клиент-серверное приложение
Здравствуйте, подскажите пожалуйста почему сервер не реагирует на клиент(при запуске клиента ничего не происходит) вот код: using...

Как правильно организовать многопоточное приложение?
Здравствуйте. У меня есть код части программы: int z = 0; if (z == 0) { z++; Thread z2 = new Thread(_ =&gt; {...

Многопоточное приложение, вычисляющее значение выражения
Написать многопоточное приложение. Два потока используются для вычисления данных по формуле y=ax+b. Коэффициенты a и b задаются для каждого...

AutoResetEven.WaitOne() наглухо вешает многопоточное приложение
Здравствуйте, уважаемы форумчане! Значит ситуация заключается в следующем. Пишу программу, в которой некий условный пакет перекладывается...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru