0 / 0 / 0
Регистрация: 29.06.2010
Сообщений: 35
1

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

17.08.2011, 01:13. Показов 5682. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.08.2011, 01:13
Ответы с готовыми решениями:

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

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

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

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

4
Каратель
Эксперт С++
6601 / 4020 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
17.08.2011, 01:28 2
http://www.rsdn.ru/article/dotnet/CSThreading1.xml
0
Эксперт .NET
4342 / 2007 / 387
Регистрация: 27.03.2010
Сообщений: 5,469
Записей в блоге: 1
17.08.2011, 07:30 3
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 4
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  [ТС] 5
Спасибо большое! Сейчас буду разбираться
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.08.2011, 10:37

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

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

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

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

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

Многопоточное приложение. При выполнении получатся большие разбросы в показаниях секундомера
using System; using System.Collections; using System.Collections.Generic; using System.Linq;...


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

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

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