Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

CRITICAL_SECTION 2 потока - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с формами http://www.cyberforum.ru/cpp/thread329288.html
Будьте добры. Подскажите , как вписать код в формы? Чтобы , когда я делаю кнопочки, они делали то, что я хочу. Понимаю, что тема широкая, поэтому может кто ресурс укажет. В поисковике никак грамотно ...
C++ В конец целочисленного двоичного файла дописать нечетные значения, содержащиеся в другом целочисленном текстовом файле Дано такое задание: Дописывание в файл. В конец целочисленного двоичного файла дописать нечетные значения, содержащиеся в другом целочисленном текстовом файле. Итоговый файл должен иметь строго... http://www.cyberforum.ru/cpp/thread329204.html
C++ База на Code Blokcs C++
Помогите дописать практику с базой, проверьте написанный код и помогите добавить, вывод из файла, редактирование по id(vuz) и удаление (group). если можно с коментариями #include <stdio.h>...
Программы по умолчанию для расширений C++
Кто знает подскажите, каким образом можно изменить программу по умолчанию для расширений в с\с++, да и не важно в чем. Системных утилит, программ я не нашел которые могут это делать, что бы в...
C++ События в ANSI C++ http://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',... подробнее

Показать сообщение отдельно
QenT
37 / 37 / 1
Регистрация: 29.01.2009
Сообщений: 244

CRITICAL_SECTION 2 потока - C++

04.07.2011, 06:48. Просмотров 1469. Ответов 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 минуту
Решение задачи реализовал за счет эвентов, но все равно буду рад услышать что не так с критическими секциями.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru