Форум программистов, компьютерный форум 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:\Windows\System32\ Добавлено через 14 секунд Как тему удалить? Добавлено через 11 минут MSVCR100D.dll этот файл тоже требуется. и он же тоже там лежит!
Генератор чисел C++
Здравствуйте. пишу вот такую программу. Генерирует случайные числа. Но каждый раз исключая повторы. помогите. не пойму в чём дело. выводить постоянно повторы! #include "StdAfx.h" #include "conio.h" #include <cstdlib> using std::srand; using std::rand; #include <time.h>
C++ оцените как я две задачи сделал http://www.cyberforum.ru/cpp-beginners/thread432344.html
вот архив в нём код, задания и входной выходной файл для 4 задания
C++ объявление директив здравствуйте, что будет если два раза одинаково объявить директиву? Допустим #include <iostream> #include "example.h" #include "example.h" подробнее

Показать сообщение отдельно
retmas
Жарю без масла
859 / 741 / 164
Регистрация: 13.01.2012
Сообщений: 1,694
21.01.2012, 15:08     Мьютекс, не могу понять, сигналирован или нет
мэйн нигде не ждет окончания созданного потока, неправильно происходит захват/освобождение мьютекса, а
C++
1
hMutex = CreateMutexA(NULL, TRUE, NULL);
в строке 41 - вообще бред

Добавлено через 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
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
#include <windows.h>
#include <iostream>
#include <cstdio>
#include <queue>
 
using namespace std;
 
queue<int> numbers;
int N;
int cnt_input = 0;
HANDLE hMutex;
 
DWORD WINAPI ThreadFunc (void * param);
 
int main ()
{
    cout<<"Input N: ";
    cin>>N;
 
    DWORD   dwThreadId;
    hMutex = CreateMutexA(NULL, FALSE, 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 ++)
    {
        WaitForSingleObject(hMutex, INFINITE);
        ++cnt_input;
        int elem;
        cin >> elem;
        numbers.push(elem);
        ReleaseMutex(hMutex);
    }
    WaitForSingleObject(hThread, INFINITE);
    CloseHandle(hMutex);
    return 0;
}
DWORD WINAPI ThreadFunc (void*)
{
    int num = N;
    while(num > 0)
    {
        WaitForSingleObject(hMutex, INFINITE);
        if(cnt_input != 0)
        {
            for(int i = 0; i < cnt_input; i ++)
            {
                cout << numbers.front() << endl;
                numbers.pop();
            }
        }
 
        num -= cnt_input;
        cnt_input = 0;
        ReleaseMutex(hMutex);
    }
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru