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

Мьютекс, не могу понять, сигналирован или нет - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В чем ошибка http://www.cyberforum.ru/cpp-beginners/thread432375.html
#include <iostream> #include <string> using namespace std; int main() { string n = "Jon" string name; cin >> name; if (n == name) cout << "Строки равны" << endl;
C++ Дана последовательность чисел a1, a2, ..., an. Указать наименьшую длину числовой оси, содержащую все эти числа Помогите решить. Дана последовательность чисел a1, a2, ..., an. Указать наименьшую длину числовой оси, содержащую все эти числа http://www.cyberforum.ru/cpp-beginners/thread432369.html
C++ MSVCP100D.dll
Почему вылазит эта ошибка на компьютере где нет MS VS, когда я запускаю .exe файл откомпелированной проги? Добавлено через 2 минуты Сори. уже нашёл. Надо положить этот же файл в каталог, где и...
Генератор чисел C++
Здравствуйте. пишу вот такую программу. Генерирует случайные числа. Но каждый раз исключая повторы. помогите. не пойму в чём дело. выводить постоянно повторы! #include "StdAfx.h" #include "conio.h"...
C++ оцените как я две задачи сделал http://www.cyberforum.ru/cpp-beginners/thread432344.html
вот архив в нём код, задания и входной выходной файл для 4 задания
C++ объявление директив здравствуйте, что будет если два раза одинаково объявить директиву? Допустим #include <iostream> #include "example.h" #include "example.h" подробнее

Показать сообщение отдельно
VASSUV
MiThEoN
412 / 278 / 15
Регистрация: 31.10.2009
Сообщений: 418
Записей в блоге: 2
Завершенные тесты: 1

Мьютекс, не могу понять, сигналирован или нет - C++

21.01.2012, 14:06. Просмотров 711. Ответов 2
Метки (Все метки)

Разработать программу, состоящую из двух потоков, работающих с общими данными, первый поток вводит с клавиатуры N целых чисел (число N также вводится пользователем), второй печатает их на экран по мере поступления. Взаимодействие между потоками синхронизировать при помощи мьютексов. В программе должна быть реализована корректная обработка ошибок системных вызовов с выдачей системного сообщения об ошибке и прекращением работы.

Не могу допереть, почему при WaitForSingleObject не ожидается первый поток
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
#include <windows.h>
#include <iostream>
#include <conio.h>
using namespace std;
int N;
int *A;
HANDLE hMutex;
DWORD WINAPI ThreadFunc (void * param);
int main ()
{
    cout<<"Input N: ";
    cin>>N;
    A = new int [N];
    DWORD   dwThreadId; // ID нового потока
    //Создаём поток cохранения по таймеру
    //проверяем, создался ли поток
    hMutex = CreateMutexA(NULL, TRUE, NULL);
    HANDLE hThread = CreateThread(NULL, 0, ThreadFunc, NULL, 0, &dwThreadId); 
    if(hThread == NULL) 
    {
        perror("CreateThread failed"); 
        return 1;
    } 
    cout<<"Input massiv : ";
    for(int i = 0 ; i < N; i ++)
    {
        cin >>A[i];
        ReleaseMutex(hMutex);  
    }
    WaitForSingleObject(hMutex, INFINITE);
    CloseHandle(hMutex);
    return 0;
}
DWORD WINAPI ThreadFunc (void * param)
{
    for(int i = 0; i < N; i ++)
    {
        WaitForSingleObject(hMutex, INFINITE); // <== здесь хотелось бы что ожидался первый поток 
        ReleaseMutex(hMutex);  
        cout<<A[i];  
        hMutex = CreateMutexA(NULL, TRUE, NULL); 
    }
    ReleaseMutex(hMutex); 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru