Атомарные операции, сигналы и критические секции. Критические секции. Критические секции

Страницы работы

Содержание работы

Учебный курс: Многопоточное программирование

Кафедра: ИС Факультет: ИТиП

Лабораторная работа №3. Атомарные операции, сигналы и критические секции.

Выполнил: Группа: 5516

Преподаватель:

Задание

Вариант

Атомарные операции

Сигналы

Критические секции

1

2

3

4

5

1

2

1

2

12

×

×

×

×

Атомарные операции

Осуществить безопасное декрементирование целочисленной переменной из двух потоков за счёт использования атомарной декрементации(Interlocked.Decrement).

Осуществить подсчёт суммы элементов массива целых чисел из двух потоков за счёт использования атомарного присваивания со сравнением (Interlocked.Add). Первый поток должен обрабатывать чётные элементы массива, второй поток – нечётные.

Сигналы

Реализовать расчёт значения длительно вычисляемой математической функции (на выбор студента, например, факториала, фрактала; при необходимости допускается имитировать задержку при выполнении такого расчёта) с возможностью досрочно прервать выполнение расчёта (AutoResetEvent). Первый поток должен вычислять значение функции, а второй – отображать процентное выполнение расчёта с возможностью его прервать.

Критические секции

1.  Реализовать имитацию перевода денежных средств с одного счёта на другой с использованием транзакции, за счёт применения критической секции (Monotor). Для моделирования счёта использовать отдельный класс. Обеспечить обработку трёх запросов на перевод денежных средств с одного счёта, поступивших с минимальным временным интервалом.

Творческая часть: реализовать имитацию подсчёта количества просмотров страниц сайта, для каждого из которых запрос обрабатывается в отдельном потоке с помощью пула потоков. Использовать атомарные операции (Interlocked)..

Входные данные

отсутствуют


Выходные данные

Консоль

**************************Asyncron Intrloced Decrement**************************

Thread first TestNum = 9

Thread first TestNum = 8

Thread first TestNum = 7

Thread second TestNum = 6

Thread first TestNum = 5

Thread second TestNum = 4

Thread first TestNum = 3

Thread second TestNum = 2

Thread first TestNum = 1

Thread second TestNum = 0

********************Asyncronus Intrloced Summ Array elements********************

Even thread     Add 10    Total summ = 10

Even thread     Add 0     Total summ = 23

Odd thread      Add 13    Total summ = 23

Odd thread      Add 22    Total summ = 88

Odd thread      Add 12    Total summ = 100

Odd thread      Add 2     Total summ = 102

Odd thread      Add 0     Total summ = 102

Even thread     Add 43    Total summ = 66

Even thread     Add 23    Total summ = 125

Even thread     Add 3     Total summ = 128

********************Factorial search with progress status***********************

Quest factorial "77" started.

Press <Esr> to End operation

Progress 22%

********************Test Accaunt Transaction Servicce***************************

Accounts before remittance operation

[id:1]  [ballance:10000]

[id:2]  [ballance:10000]

[id:3]  [ballance:10000]

Impossible Transaction- - - - - - - - - - - - - - - - - - - - - - -

Sender[id]      $        Adress[id]                 Date

         1      5000$             2                 2010-12-28 11:24:21Z

Transaction Success+ + + + + + + + + + + + + + + + + + + + + + + +

Sender[id]      $        Adress[id]                 Date

         1      5000$             3                 2010-12-28 11:24:21Z

Transaction Success+ + + + + + + + + + + + + + + + + + + + + + + +

Sender[id]      $        Adress[id]                 Date

         1      5000$             2                 2010-12-28 11:24:21Z

Accounts after remittance operation

[id:1]  [ballance:0]

[id:2]  [ballance:15000]

[id:3]  [ballance:15000]

*********************************Creativ part**********************************

<Page Open>11:24:21<1,00>

<Page Open>11:24:21<2,00>

<Page Open>11:24:22<3,00>

<Page Open>11:24:22<4,00>

<Page Open>11:24:23<5,00>

<Page Open>11:24:23<6,00>

<Page Open>11:24:23<7,00>

<Page Open>11:24:24<8,00>

<Page Open>11:24:24<9,00>

<Page Open>11:24:25<10,00>

<Page Open>11:24:25<11,00>

<Page Open>11:24:25<12,00>

<Page Open>11:24:26<13,00>

<Page Open>11:24:26<14,00>

<Page Open>11:24:27<15,00>

                 Calculate Rtesults

expected page open:     15

received page open:     15

Для продолжения нажмите любую клавишу . . .

Архив проекта

Похожие материалы

Информация о работе