Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 04.10.2018
Сообщений: 89

Как изменить программу так, чтобы было два потока:соотвественно один родительский, другой дочерний

24.10.2018, 21:56. Показов 1439. Ответов 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
67
68
69
70
71
72
73
74
75
76
77
78
#include"stdafx.h"
#include<iostream>
#include<windows.h>
#include<string>
#include<io.h>
#include<thread> //для работы с потоками 
#include<mutex>
#include<fstream>
using namespace std;
 
//ДЕСЯТЬ СТРОК
 
 
void parent(ifstream &file, mutex &mtx)
{
    string str;
    while (!file.eof()) //Пока не пройдет весь файл 
    {
        mtx.lock(); //Блокирует мьютекс
        for (int i = 0; i < 2; i++) //Сколько строк должно быть выведено
        {
            if (file.eof()) //поиск на наличие символов 
                break;
            getline(file, str); //Получение строки из файла
            
            cout << "\tРодительский процесс: " << str << endl;
            
        }
        mtx.unlock(); //Разблокирует мьютекс, чтобы начался дочерний процесс
        Sleep(1000); //приостановка программы
    }
}
 
void child(ifstream &file, mutex &mtx)
{
    string str;//строковая переменная 
    while (!file.eof())//проверочка на наличие строк 
    {
        mtx.lock(); //Блокирует мьютекс
        for (int i = 0; i < 3; i++) //Сколько строк должно быть выведено
        {
            if (file.eof())//если файл пуст
                break;
            getline(file, str);//Получение строки из файла
            SetColor(Blue, Black);
            cout << "Дочерний процесс: " << str << endl;//Вывод 
            SetColor(White, Black);
        }
        mtx.unlock(); //Разблокирует мьютекс, чтобы начался родительский процесс
        Sleep(1000);//приостановка программы
    }
}
 
int main()
{
    setlocale(LC_ALL, "rus");//Подключение русского языка 
    mutex mtx; //Переменная типа мьютекс
    ifstream file("1.txt"); //Открытие файла для чтения строк
    
    if (!file.is_open())//проверка наличия файла 
    
        cout << "Файл не существует!";
        
    else if (file.peek() == EOF)//проверка на наличие строк
        cout << "Файл пуст!";
    
    else
    {
        parent( ref(file), ref(mtx)); //Запуск потоков и передача параметров
        thread t2(child, ref(file), ref(mtx));
    
        t2.join();
    }
    file.close();//закрытие файла 
    cout << endl;
    
    system("pause");
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.10.2018, 21:56
Ответы с готовыми решениями:

Как сделать так чтобы нельзя было запускать один exe файл два и более раз
Как сделать так чтобы нельзя было запускать один exe файл несколько раз: у меня в папке с проектом лежит exe файл программы как сделать так...

Изменить программу так, чтобы было прямое обращение к процедуре и функции
Написана программа. Необходимо так изменить программу , чтобы было прямое обращение к процедуре и функции. Program laba6; uses crt; ...

Изменить программу так, чтобы нужно было ввести размер n матрицы и матрица выводилась сама
Как изменить программу так, чтобы нужно было ввести размер n матрицы и матрица выводилась сама. program stroka; uses crt; var...

2
166 / 109 / 57
Регистрация: 30.08.2018
Сообщений: 357
24.10.2018, 23:20
Лучший ответ Сообщение было отмечено Fretr30 как решение

Решение

Вам же ответили

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
C++
1
2
thread t2(child, ref(file), ref(mtx));
 parent(file, mtx);
Оставить одну функцию ?

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
#include<iostream>
#include<string>
#include<thread> //для работы с потоками
#include<mutex>
#include<fstream>
using namespace std;
 
 
void func(ifstream &file, mutex &mtx,
        int len, const  std::string & name)
{
    string str;//строковая переменная
    while (!file.eof())//проверочка на наличие строк
    {
        mtx.lock(); //Блокирует мьютекс
        for (int i = 0; i < len; i++) // len - сколько строк должно быть выведено
        {
            if (!getline(file, str))  //Получение строки из файла
                break;
 
            cout <<  name << str <<  endl;//Вывод
 
        }
        mtx.unlock(); //Разблокирует мьютекс
        Sleep(1000);//приостановка программы
    }
}
int main()
{
    setlocale(LC_ALL, "rus");//Подключение русского языка
    mutex mtx; //Переменная типа мьютекс
    ifstream file("1.txt"); //Открытие файла для чтения строк
 
    if (!file.is_open())//проверка наличия файла
 
        cout << "Файл не существует!";
 
    else if (file.peek() == EOF)//проверка на наличие строк
        cout << "Файл пуст!";
 
    else
    {
        thread t(func, ref(file), ref(mtx), 3,"Дочерний поток: " );
        func (file, mtx, 2, "Главный поток: "); 
        t.join();
    }
    file.close();//закрытие файла
    cout << endl;
 
    system("pause");
}
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
24.10.2018, 23:37
Fretr30, зачем ты спамишь темами?
Создание потока
Как изменить программу так, чтобы было два потока:соотвественно один родительский, другой дочерний
https://www.cyberforum.ru/cpp-... 39808.html

Создание функции, которая возвращает подстроку строки S с позиции N1 длиной N2
Создание функции, которая возвращает подстроку строки S с позиции N1 длиной N2

Добавлено через 43 секунды
Цитата Сообщение от JaponDemon Посмотреть сообщение
Вам же ответили
он чукча не читатель
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.10.2018, 23:37
Помогаю со студенческими работами здесь

Не получается перемножить два вектора, один комплексный другой его комплексно-сопряженный, так чтобы получился вектор с
Не получается скалярно перемножить два вектора, один комплексный другой его комплексно-сопряженный, так чтобы получился вектор с...

Как заполнить listBox так, чтобы можно было вытащить два элемента
Здравствуйте подскажите, как заполнить listBox так, что бы можно было вытащить два элемента. Допустим, у меня есть база из которой я...

Расположить почтовые ящики так, чтобы народу на один было как можно меньше
Дано N городов и Y почтовых ящиков, а также население. Нужно расположить почтовые ящики так, чтобы народу на 1 было как можно меньше(т.е...

Изменить родительский класс при наведении на дочерний
Всем привет. Битый час бьюсь с проблемой, решил спросить у вас. Имеется див, шириной 100%. Поверх него (внутри) висят 5 дивов,...

Изменить программу вывода функции так, чтобы можно было передавать функции типа double
Помогите разобраться. Изменить программу вывода функции так, чтобы можно было передавать функции типа double(double,double)....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru