Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Удаление цифр из числа Помогите пожалуйста. Давно пятизначне число, сделать его трехзначным путем зачеркивания, 2 и 4 цифры https://www.cyberforum.ru/ cpp-beginners/ thread2341752.html Выбрасывается исключение C++
Добрый вечер, киберфорумчане! Возникла проблема, надеюсь на вашу помощь!)) P.S. Ниже приложен скриншот. #include <iostream> #include <conio.h> using namespace std; int main() {...
C++ Уравнение принадлежности некоторой точки к заштрихованной области параболы Дана парабола ограниченная двумя прямыми, проходящих через начало координат. Нужно создать программу, проверяющую принадлежность точки заштрихованной области. Уравнения для прямых: y = x, y = -x.... https://www.cyberforum.ru/ cpp-beginners/ thread2341744.html C++ Сравнить числа по модулю и вывести с условием Привет всем. Сама задача: Требуется написать программу, которая считывает числа n и m, вычитает 100 из n в случае, если оно больше, чем m по абсолютной величине (иначе говоря, по модулю), а затем... https://www.cyberforum.ru/ cpp-beginners/ thread2341740.html
C++ Структура Студент, определить средний балл каждого студента
Добрый вечер помогите решить задачу Определить структуру «студент», поля структуры: ФИО, массив элементов структуры «дисциплина» (не менее 4-х элементов, результаты сдачи сессии), при...
C++ Перевод из String в Char https://www.cyberforum.ru/ cpp-beginners/ thread2341737.html
Добрый вечер форум. У меня не получается перевод из string в char, использую sprintf. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <iostream> using namespace std; int main()...
C++ "Угадай-ка моё число" с неприятным багом Программа пытается угадать положительное число, которое ввёл пользователь на входе за минимальное количество попыток путем элементарного алгоритма. Она понимает, когда загаданное пользователем число... https://www.cyberforum.ru/ cpp-beginners/ thread2341734.html Вычислить сумму ряда C++
Здраствуйте, помогите написать программу, которая посчитает число ряда от 1 до n. Спасибо!
C++ Слишком много аргументов в вызове функции https://www.cyberforum.ru/ cpp-beginners/ thread2341723.html
Нужно из массива Char'ов выбрать цифры, но при написании кода столкнулся с ошибкой в этой строчке a = getchar(buff); Не понимаю, чего от меня хотят( #include "pch.h" #include <iostream>...
C++ Преобразовать std::vector в массив параметров https://www.cyberforum.ru/ cpp-beginners/ thread2341717.html
Есть функция и указатель на функцию: template<typename... T> int (*pointer)(T... parameters); int f(int n, std::vector<MyStruct> parameters, std::vector<int> types) {} Как вызвать pointer с...
C++ Суммирование двух чисел в восьмеричной системе счисления
Нужно бех специализированных операторов языка программирования сложить два числа в восьмеричной системе счисления . Все операции необходимо программировать в соответствии с ручным алгоритмом....
C++ Метод наименьших квадратов(численные методы) https://www.cyberforum.ru/ cpp-beginners/ thread2341713.html
Совсем не знаю как сделать задачу, если кто то сможет сделать буду очень благодарен и отблагодарю. Заранее спасибо))) Найти по методу наименьших квадратов приближенное представление многочленом 4-й...
0 / 0 / 0
Регистрация: 27.10.2018
Сообщений: 27
0

Как синхронизировать потоки подскажите, пожалуйста, чтобы они действовали взаимосвязано - C++ - Ответ 13009716

28.10.2018, 19:41. Показов 258. Ответов 0
Метки (Все метки)

Как синхронизировать потоки подскажите, пожалуйста, чтобы они действовали взаимосвязано, сначала первый, потом второй, затем опять первый, потом второй
Какая-то лютая тема, я ее не могу понять, как это все реализовать в коде
Родительский и вновь созданный поток должны распечатать десять строк текста так, чтобы вывод родительского и дочернего потока был синхронизован: сначала родительский поток выводил бы две строки, затем дочерний три строки текста, затем родительский две строки и т.д. Используйте мьютексы.

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
#include"stdafx.h"
#include<iostream>
#include<windows.h>
#include<string>
#include<io.h>
#include<thread>
#include<mutex>
#include<fstream>
using namespace std;
 
int _nextOrder = 0;
mutex _m;
 
bool lock(int currentOrder)
{
    for (;;)
    {
        _m.lock();
 
        if (_nextOrder == currentOrder)
            break;
 
        _m.unlock();
    }
 
    return false;
}
 
void unlock(int nextOrder)
{
    _nextOrder = nextOrder;
    _m.unlock();
}
 
void func(ifstream &file, mutex &mtx, int len, const  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, "\tДочерний поток: ");
        
        func(file, mtx, 2, "Родительский поток: ");
        t.join();
    }
    file.close();//закрытие файла
    cout << endl;
 
    system("pause");
}


Вернуться к обсуждению:
Как синхронизировать потоки подскажите, пожалуйста, чтобы они действовали взаимосвязано C++
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2018, 19:41
Готовые ответы и решения:

Как синхронизировать потоки, чтобы сначала один поток, затем первый завершался и начинался второй
Как синхронизировать потоки, чтобы сначала один поток, затем первый завершался и начинался второй...

Как приостановить потоки, чтобы потом они начали работать с того места, на котором остановились?
помогите пожалуйста!!! есть два потока, которые действуют одновременно. как их приостановить,...

Как сделать чтобы на один из элементов не действовали правила CSS
Такая ситуация друзья у меня есть &lt;div id=&quot;111&quot;&gt; в нём есть элементы и мне надо что бы на один из...

Как синхронизировать потоки?
Разбираюсь с legacy-кодом. Наткнулся на такой фрагмент в фоновом потоке: private void...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2018, 19:41
Помогаю со студенческими работами здесь

Как синхронизировать потоки?
Есть метод с параметрами, данный метод будет использоваться в трех разных потоках. Параметры...

Подскажите пожалуйста, как подключить функции password_hash() и hash_equals(), а то, у меня они не определены
Здравствуйте! У меня на хостинге и на денвере, не поддерживаются как минимум 2 функции ...

Как правильно синхронизировать потоки?
По нажатию кнопки создается N потоков (в данном случае 5): Thread threads = new Thread; ...

Как синхронизировать потоки и окно ShowDialog?
Здравствуйте, только начинаю осваивать C# .NET. В процессе написания приложения windows forms...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru