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

Помощь с использованием потоков - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычислить значение выражения по формуле http://www.cyberforum.ru/cpp-beginners/thread726891.html
вычислить значение выражения по формуле(все переменные принимают действительные значения): x*ln(x)+y/(cos(x)-(x/3))
C++ Ветвление (значение функции от двух аргументов х и у, заданная таблицей) Написать программу что вычисляет значение функции от двух аргументов х и у, заданная таблицей. http://www.cyberforum.ru/attachment.php?attachmentid=211605&stc=1&d=1355164751 http://www.cyberforum.ru/cpp-beginners/thread726885.html
Расставить в порядке возрастания элементы в главных диагоналях каждой матрицы. C++
Здравствуйте, помогите решить эту задачу, пож-та. Я вроде всё сделал, не знаю что где не так. Вот эта задача: Заданы матрицы A= (i=1, 2, 3; j=1, 2, 3), B= (i=1, 2, 3; j=1, 2, 3), то есть матрицы А и В - 3x3. Расставить в порядке возрастания элементы в главных диагоналях каждой матрицы. Затем A и B сложить. Расстановку в порядке возрастания элементов оформить в виде подпрограммы. Вот, что у...
Преобразуйте эту строчку так, чтобы сначала в ней шли цифры, а потом - все буквы исходной строчки... C++
Условие: дана строчка, которая содержит буквы и цифры. Преобразуйте эту строчку так, чтобы сначала в ней шли цифры, а потом - все буквы исходной строчки. Возможные символы - цифры; прописные и строчные латинские буквы. Сделал так: #include <iostream> #include <stdio.h> int main() { using namespace std; char *string;
C++ Нужны разъяснения по функции http://www.cyberforum.ru/cpp-beginners/thread726873.html
Имеется функция: #include "stdafx.h" #include <cstdlib> #include <iostream> #include <vector> using namespace std; int* find(const vector<int> &vec, int value)
C++ Преобразование в char Добрый вечер. Как сделать, чтобы работало: fstream outStream; double z, dz; ... outStream.open("points/" + (char)(z/dz) + ".txt", ios::out);? Добавлено через 23 часа 54 минуты Никто не знает? подробнее

Показать сообщение отдельно
Trant
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 18

Помощь с использованием потоков - C++

10.12.2012, 22:46. Просмотров 343. Ответов 2
Метки (Все метки)

Добрый вечер, вот пишу программу, которая создает 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
65
66
#include <windows.h>
#include <string>
#include <fstream>
#include <iostream>
#include <stdio.h>
#include <ctype.h>
 
using namespace std;
 
HANDLE hMutex = CreateMutex(NULL, false, NULL);
 
DWORD ThreadFunc(LPVOID lpvThreadParam)
{
    int count1=0,count2=0;
    ifstream fileIn("C:\\in.txt");
    if(int(lpvThreadParam)==1)
    {
        while(!fileIn.eof())
        {
          char ch;
          fileIn.get(ch);
          if(ch!=' '&&ch!=EOF&&ch!='\n')
              count1++;
        }
        fileIn.close();
        WaitForSingleObject(hMutex, INFINITE);
        ofstream fileOut("C:\\out.txt");
        fileOut << "Символов в тексте " << count1 << ". Выполнялся поток №" << int(lpvThreadParam) << endl;
        fileOut.close();
        ReleaseMutex(hMutex);
    }
    if(int(lpvThreadParam)==2)
    {
        while(!fileIn.eof())
        {
          char ch;
          fileIn.get(ch);
          if(ch==' ')
              count2++;
        }
        fileIn.close();
        WaitForSingleObject(hMutex, INFINITE);
        ofstream fileOut("C:\\out.txt");
        fileOut << "Пробелов в тексте " << count2 << ". Выполнялся поток №" << int(lpvThreadParam) << endl;
        fileOut.close();
        ReleaseMutex(hMutex);
    }
    
    ExitThread(0);
}
 
 
int main()
{
    int Id = 1;
 
    DWORD lpThreadId[2];
    HANDLE hThreadId[2];
 
    hThreadId[0] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) ThreadFunc, (LPVOID)Id++, 0, &lpThreadId[0]);
    hThreadId[1] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) ThreadFunc, (LPVOID)Id++, 0, &lpThreadId[1]);
    WaitForMultipleObjects(2, hThreadId, TRUE, INFINITE);
 
 
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru