Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с формами https://www.cyberforum.ru/ cpp/ thread329288.html
Будьте добры. Подскажите , как вписать код в формы? Чтобы , когда я делаю кнопочки, они делали то, что я хочу. Понимаю, что тема широкая, поэтому может кто ресурс укажет. В поисковике никак грамотно ...
C++ В конец целочисленного двоичного файла дописать нечетные значения, содержащиеся в другом целочисленном текстовом файле
Дано такое задание: Дописывание в файл. В конец целочисленного двоичного файла дописать нечетные значения, содержащиеся в другом целочисленном текстовом файле. Итоговый файл должен иметь строго...
C++ База на Code Blokcs C++
Помогите дописать практику с базой, проверьте написанный код и помогите добавить, вывод из файла, редактирование по id(vuz) и удаление (group). если можно с коментариями #include <stdio.h>...
C++ Программы по умолчанию для расширений Кто знает подскажите, каким образом можно изменить программу по умолчанию для расширений в с\с++, да и не важно в чем. Системных утилит, программ я не нашел которые могут это делать, что бы в... https://www.cyberforum.ru/ cpp/ thread328103.html
C++ События в ANSI C++ https://www.cyberforum.ru/ cpp/ thread328094.html
Прошу прощенья, что не очень внятно формулирую тему. Для меня это познавательный вопрос. Меня интересует: 1)Можно ли и как в классическом C++ без всяких GUI (C++ Builder, Visual Studio)...
C++ mpl проход по элементам
Пытался написать вывод элементов vector_c не через for_each. Не вышло. Кто подскажет как сие сделать наиболее удобно? Пример вектора. typedef boost::mpl::vector_c<char, 'h', 'e', 'l', 'l',...
Как присвоить переменной значение, взятое по определенному адресу? C++
Собственно у меня есть адрес (например, 010426D8), я знаю, что под этим адресом хранится целочисленное значение, как присвоить переменной значение из этого адреса?
C++ Найти хендл чужого окна, зная его атом как можно найти хендл чужого окна по атому?? https://www.cyberforum.ru/ cpp/ thread326519.html
C++ На каком языке писать программу? https://www.cyberforum.ru/ cpp/ thread325748.html
Добрый день! Не знаю к какому языку программирования это относится, поэтому спрошу здесь. На каком ЯП лучше всего будет написать программу, которая сможет менять бекграунд на рабочем столе в...
C++ Преобразование текста в речь Здравствуйте. Подскажите пожалуйста литературу(можно с громоздкими теоретическими выкладками) для написания следующих приложений: 1)Преобразователь текста в речь(наподобие как в Винде в закладке... https://www.cyberforum.ru/ cpp/ thread325692.html
40 / 40 / 8
Регистрация: 29.01.2009
Сообщений: 244
0

CRITICAL_SECTION 2 потока

04.07.2011, 06:48. Просмотров 1983. Ответов 5
Метки (Все метки)

Задача заставить 2 потока работать точно друг за другом(по очереди):

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
main()
{
/*инициализация*/
EnterCriticalSection( &cs );//блокировка первого потока
EnterCriticalSection( &cs2 );//блокировка второго потока
/*запуск потоков*/
}
DWORD WINAPI Func1(PVOID pvParam)
{
        LeaveCriticalSection( &cs );//разблокирование первого потока 
        while(1) 
        {       
    EnterCriticalSection( &cs );//блокировка первого потока после выполнения
           /*..........*/
    LeaveCriticalSection( &cs2 ); //разблокирование второго потока       
         } 
        return 0;
};
DWORD WINAPI Func2(PVOID pvParam)
{        
        while(1) 
        {       
    EnterCriticalSection( &cs2 );//блокировка второго потока после выполнения
           /*..........*/
    LeaveCriticalSection( &cs );//разблокирование первого потока        
         } 
        return 0;
};
Но идею с процессами я видать не правильно понял, так как в итоге два процесса работают без какого либо ограничения в последовательности и даже такой пример с одним потоком работает бесконечно, хотя вроде должен блокироваться на втором вхождении в критическую секцию:
C++
1
2
3
4
5
6
7
8
9
DWORD WINAPI Func1(PVOID pvParam)
{
        while(1) 
        {       
    EnterCriticalSection( &cs );//бесконечно входит в критическую секцию не блокируясь
           /*..........*/     
         } 
        return 0;
};
Буду очень благодарен объяснению данной проблемы и примеру для решения задания.

Добавлено через 1 час 1 минуту
Решение задачи реализовал за счет эвентов, но все равно буду рад услышать что не так с критическими секциями.

Вернуться к обсуждению:
CRITICAL_SECTION 2 потока
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.07.2011, 06:48
Готовые ответы и решения:

critical_section.2 потока
есть программа которая выводит из txt файла символы последовательно с интервалом, реализовано с...

VC++6.0, как из порожденного потока прочитать переменную главного потока?
Visual C++ 6.0 SP5 Простое диалоговое окно, (MFC) созданное мастером среды VC По нажатию на...

Синхронизация потоков. CRITICAL_SECTION
Добрый вечер. У меня такой вопрос: почему объектами CRITICAL_SECTION можно выполнять синхронизацию...

CRITICAL_SECTION (необходимо исправить ошибки кода)
Имеется код. Помогите исправить ошибку. #include &lt;windows.h&gt; #include &lt;iostream&gt; using...

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