Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
10 / 6 / 4
Регистрация: 31.05.2015
Сообщений: 18

Из семафоров в критические секции

25.05.2017, 20:09. Показов 599. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите изменить код, не пойму как работают критические секции. Нужно вместо семофоров использовать критические секции.

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
#include "stdafx.h"
#include "iostream"
#include "locale"
#include "process.h"
#include "windows.h"
 
using namespace std;
 
HANDLE m_hSemaphore;
int j = 0, k, i;
int proc1, proc2;
int mem[35] = { 35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1 };
 
void vivod()
{
    for (int i = 0; i < 35; i++)
    {
        cout << mem[i] << " ";
    }
 
    return;
}
 
void porivn(int k)
{
    int a;
    proc1 = mem[k];
    proc2 = mem[k + 1];
    if (proc2<proc1) {
        a = proc2;
        proc2 = proc1;
        proc1 = a;
    }
    mem[k] = proc1;
    mem[k + 1] = proc2;
}
 
void Thread(void* pParams)
{
    int k = 0, num = 0;
    while (TRUE)
    {
        WaitForSingleObject(m_hSemaphore, INFINITE);
        for (k = 0; k<35; k++) {
            porivn(k);
        }
        ReleaseSemaphore(m_hSemaphore, 1, NULL);
        num++;
    }
}
 
int main(void)
{
    //vivod();
    m_hSemaphore = CreateSemaphore(NULL, 1, 35, NULL);
    _beginthread(Thread, 0, NULL);
    while (TRUE)
    {
        WaitForSingleObject(m_hSemaphore, INFINITE);
        vivod();
        system("pause");
        ReleaseSemaphore(m_hSemaphore, 1, NULL);
        //CloseHandle(m_hSemaphore);
    }
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.05.2017, 20:09
Ответы с готовыми решениями:

Критические секции в классах
Задание: Реализовать очередь текстово информации на динамическом массиве. Потоки первого типа добавляют информацию, потоки второго вида...

Критические секции в потоках
Помогите пожалуйста локализовать ошибку, преподаватель говорит не верно... Если возможно подскажите пожалуйста методы или еще что то для...

Deadlock и критические секции
Здраствуйте, мне необходимо реализовать моделирование «тупика» на примере работы с критическими секциями. Временные параметры модели...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.05.2017, 20:09
Помогаю со студенческими работами здесь

Потоки. Критические секции
Не выдает результат.Считывает данные,и не выдает результат. #include &quot;stdafx.h&quot; #include &lt;windows.h&gt; #include...

Как работают критические секции на примерах?
Я не совсем понял,как они работают. Я понял,что это нужно для синхронизации. Я не понял,что происходит при входе в крит.секцию. ...

Критические секции
было так: class A { someType t; public: void f1() { модификация t; } void f2() { ...

Критические секции
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,...

stm32f407 + критические секции
Доброго дня всем. Пишу на STM32 под freeRTOS. Наткнулся на проблему с критическими секциями. Появилась задачка маршрутизации для...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru